2014-01-22 119 views
0

我對編程有點新,並且根本沒有使用緩衝寫入器。投入在哪裏?

據我所見,我的代碼很好。不過,我不知道在哪裏,甚至是否打印到文件。我無法找到文件的位置。

if (choice ==2) { 
    String Id; 
    String Name; 
    String Time; 
    int penalty; 
    String Code; 

    new FileWriter("res/dogs.txt",true); 

    try { 
     System.out.println("add a dog"); 
     System.out.println("enter dog ID (cancel to quit)"); 
     Id =k.next(); 
     System.out.println("enter dog name"); 
     Name=k.next(); 
     System.out.println("enter dogs time"); 
     Time = k.next(); 
     System.out.println("enter penalty quantity"); 
     penalty = k.nextInt(); 
     System.out.println ("enter course code"); 
     Code = k.next(); 

     if (!Id .equalsIgnoreCase ("cancel")) { 
      //true = append file 
      FileWriter fileWritter = new FileWriter(Dog.getName(),true); 
      BufferedWriter bufferWritter = new BufferedWriter(fileWritter); 
      bufferWritter.write(Id); 
      bufferWritter.write(" "); 
      bufferWritter.write(Name); 
      bufferWritter.write(" "); 
      bufferWritter.write(Time); 
      bufferWritter.write(" "); 
      bufferWritter.write(penalty); 
      bufferWritter.write(" "); 
      bufferWritter.write(Code); 
      bufferWritter.write(" "); 
      bufferWritter.close(); 
     } 
    } catch(IOException e){ 
     e.printStackTrace(); 
    } 
} else if (choice == 3) { 
    mainmenu(); 
} 

有關我在做什麼錯的任何想法?

回答

1

有關於你在哪裏寫一兩個錯誤。首先,您在try塊中的代碼開始處創建了一個新的FileWriter,其中"res/dogs.txt"路徑,但您永遠不會使用它!

在後面的代碼,但是你開始寫之前,你撥打:

FileWriter fileWritter = new FileWriter(Dog.getName(),true); 
BufferedWriter bufferWritter = new BufferedWriter(fileWritter); 

,然後寫被鏈接到FileWriter與文件路徑爲Dog.getName()不管這可能是BufferedWriter,而忽視了原您創建的文件作者。

此外,你應該打電話給你close()方法在finally塊這樣的:

FileWriter writer //or other resource using method 
try 
{ 
     //do stuff 
} 
catch(Exception) 
{ 
    //handle problem 
} 
finally 
{ 
     writer.close(); 
} 

,甚至更好了帶資源嘗試這樣的:

try(BufferedWriter writer = new BufferedWriter(otherWriter)) 
{ 
     //do stuff 
} 
catch(Exception) 
{ 
     //handle error 
    } 
1

默認情況下,使用FileWriter創建的文件將保存在運行程序的目錄中。

請注意,您可以通過在文件名中添加文件夾路徑來指定要保存的文件的保存位置。例如,如果你想將文件保存在D:\你可以這樣做:

FileWriter fileWritter = new FileWriter("D:\\res\\"+Dog.getName()+".txt",true);