我的程序假設在PhotoAlbum中保留一組照片。它首先閱讀一個照片文件夾,並將它們添加到我的PhotoAlbum。然後打印一個菜單,允許用戶列出所有照片,添加照片,查找照片,保存並退出程序。現在,如果我運行我的程序,它會將100張照片添加到PhotoAlbum,但如果我不保存就退出程序,即使我沒有添加照片或對PhotoAlbum執行任何操作,也會清除正在讀取的文件,並且我不知道爲什麼。爲什麼我的文件被清除,如果我不保存它?
這裏是我的打印到文件的方法:
private static void saveFile(PrintWriter writer) {
String result;
ArrayList<Photo> temp = album.getPhotoAlbum();
for (int i = 0; i < temp.size(); i++){
result = temp.get(i).toString() + "\n";
writer.println(result);
}
writer.close();
}
而且其中PrintWriter的實例化:
File file = new File(args[0] + File.separator + "album.dat");
try {
PrintWriter fout =
new PrintWriter(new FileWriter(file));
fileWriter = fout;
} catch (IOException e){
System.out.println("ReadFromFile: Folder " + args[0]
+ " is not found.");
System.exit(0);
}
而且在那裏它被稱爲我的runMenu方法:
private static void runMainMenu(Scanner scan) {
String input;
do {
showMainMenu();
input = scan.nextLine().toLowerCase();
switch (input.charAt(0)) {
case 'p':
System.out.println(album.toString());
break;
case 'a':
album.addPhoto(readPhoto(scan, t));
break;
case 'f':
findMenu(scan);
break;
case 's':
saveFile(fileWriter);
System.exit(0);
break;
case 'q':
break;
default:
System.out.println("Invalid entry: " +
input.charAt(0));
break;
}
} while (!input.equalsIgnoreCase("q"));
}
是不是*用於C#? OP是Java。 – GalacticCowboy 2010-04-19 17:24:35