2014-01-29 125 views
1
try { 
    BufferedReader br = new BufferedReader(new FileReader(user + ".txt")); 
    String time = t.toString(); 

    while ((line = br.readLine()) != null) { 
     String [] check = line.split(";"); 
     date.add(check[0]); 
     timeIn.add(check[1]); 
     timeOut.add(check[2]);   
    } 
    br.close(); 

    BufferedWriter bw = new BufferedWriter(new FileWriter(user + ".txt")); 

    if (timeOut.contains("not_out")){ 
     indx = timeOut.indexOf("not_out"); 
     timeOut.set(indx, time);  
    } 

    for (int i = 0; i < date.size(); i++) { 
     d =getDate(i); 
     ti = ti(i); 
     to = to(i); 
     bw.write(d + ";" + ti + ";" + to); 
     bw.newLine(); 
    }   
    bw.close(); 

} catch (Exception e) { 
    System.out.println("Time out error"); 
    e.printStackTrace(); 
} 
return true; 

文本文件的内容是:覆盖文件中的Java

eg. 11/22/13;8:00;8:30 
    11/23/13;8:00;not_out 

然后我将取代not_out到当前的时间,因为我正在做的时间在和超时程序。 但总是输出是这样的:

11/22/13;8:00;8:30 
    11/22/13;8:00;8:30 
    11/23/13;8:00;8:40 

它总是复制我的第一个记录。

+0

是你在阅读后正确关闭文件?这似乎是封闭无处... – Learner

+3

这是一个非常不完整的问题,你留下太多洞让我们能够提供帮助。 'ti(i)'做什么? “(我)”做了什么?他们持有什么?你有没有调试过这些家伙?你为什么不使用你已经填充的timeIn和timeOut集合?至少你应该加入一些println语句来查看你的问题在哪里。 –

+0

那么ti(i)是一种获取数组内部元素的方法timeIn中的(i)就像ti方法,但它获取数组列表中的元素timeOut。 – user3194331

回答

1

这不是一个答案,所以被张贴为“社区维基”,但你绝对需要做一些基本的调试。你应该在至少这样做:

try{ 

    BufferedReader br = new BufferedReader(new FileReader(user+".txt")); 

    String time = t.toString(); 

    while((line=br.readLine())!=null){ 
     String [] check = line.split(";"); 
     System.out.println("check: " + java.util.Arrays.toString(check)); 
     date.add(check[0]); 
     timeIn.add(check[1]); 
     timeOut.add(check[2]); 
    } 
    br.close(); 


    BufferedWriter bw = new BufferedWriter(new FileWriter(user+".txt")); 


    if(timeOut.contains("not_out")){ 
     indx = timeOut.indexOf("not_out"); 
     timeOut.set(indx, time);  
    } 

    for (int i = 0 ; i <date.size();i++){ 
     d =getDate(i); 
     ti= ti(i); 
     to= to(i);  

     // ***** added ***** 
     System.out.printf("i: %d, d: %s, ti: %s, to: %s%n", i, d, ti, to); 
     bw.write(d+";"+ti+";"+to); 
     bw.newLine(); 
    }   
    bw.close(); 
    } catch(Exception e){ 
    System.out.println("Time out error"); 
    e.printStackTrace(); 
    } 
    return true; 
} 

并再次,你应该向我们展示更多的代码,包括ti(...)to(...)变量。当你在这里问问题时,你应该努力只发布格式良好的代码,并且有规则的,有条理的缩进,有足够的但不太多的空白(尤其是不要太多的空行)。你想努力使它容易为我们提供帮助。

+0

我认为这不是覆盖是问题,感谢气垫船在您的意见是啊我意识到问题是在我的arraylist我以前的数据不会被删除,这就是为什么他们被列入我的写作。现在我想我应该先清理我的数组列表,然后再放置元素 – user3194331