我試圖用Java編寫預約書程序,但是BufferedWriter似乎沒有寫入文件。如何讓BufferedWriter寫入文本文件?
此代碼是一個try { } catch (FileNotFoundException) { } catch (IOException) { }
塊
FileWriter writer = new FileWriter("Appointments" + name + ".txt", true);
BufferedWriter bufferedWriter = new BufferedWriter(writer);
if (open == 'o') {
FileReader reader = new FileReader("Appointments" + name + ".txt");
BufferedReader bufferedReader = new BufferedReader(reader);
while ((line = bufferedReader.readLine()) != null) {
if (line.indexOf("one-time") == line.length() - 8) {
OneTime o = fromStringOneTime(line);
oneTimes.add(o);
}
if (line.indexOf("daily") == line.length() - 5) {
Daily d = fromStringDaily(line);
dailys.add(d);
}
if (line.indexOf("monthly") == line.length() - 7) {
Monthly m = fromStringMonthly(line);
monthlys.add(m);
}
}
}
的while循環剛初始化所有值的當前在文件分成3周不同的ArrayLists的所有內部。
然後我的代碼來創建新的對象塊,一旦你選擇要添加預約(變量desc
和date
先前已經被定義):
System.out.print("Enter if this is a (o)ne-time, (d)aily, or (m)onthly appointment: ");
freq = scanner.next().charAt(0);
if (freq == 'o') {
OneTime o = new OneTime(desc, date.getDate());
oneTimes.add(o);
totalCount++;
bufferedWriter.write(o.toString());
bufferedWriter.newLine();
valid = true;
} else if (freq == 'd') {
Daily o = new Daily(desc, date.getDate());
dailys.add(o);
totalCount++;
bufferedWriter.write(o.toString());
bufferedWriter.newLine();
valid = true;
} else if (freq == 'm') {
Monthly o = new Monthly(desc, date.getDate());
monthlys.add(o);
totalCount++;
bufferedWriter.write(o.toString());
bufferedWriter.newLine();
valid = true;
}
在的結束嘗試塊,我有行reader.close()
和writer.close()
。那麼爲什麼當我檢查應該保存的文件時,它仍然顯示爲空白?這是我第一次處理文件保存問題,所以我不確定它爲什麼沒有按照應有的方式工作。 。
編輯:如果選擇打開,而不是創建一個新的
您無法同時讀取和寫入文件大多數操作系統。 – EJP
那麼,如果我在完成使用後立即關閉閱讀器,它會起作用嗎?因爲我只需要將它用於初始化,在我放入我的帖子的第一個代碼塊中。 – RoboticPlayer
您可以嘗試寫入具有不同文件名的文件,並在程序結束時將其重命名爲 – GrabNewTech