當寫一個的BufferedWriter文件,內容並未直接寫入到磁盤,因爲它顯然是緩衝。您應該在他的回答中將內容刷新爲@ludo_rj建議的內容。
更好的辦法是儘早關閉作者,這會自動刷新內容。順便說一下,關閉閱讀器也是必要的。
你應該用下面的機制去(我已分發的方式分成幾個方法,使之更加清楚):
public class SaveStateTesing {
private static final String FILE_NAME = "C:\\Users\\Nicolas\\Desktop\\save.txt";
public static void main(String[] args) throws IOException {
saveState("helloWorld", FILE_NAME);
String state = readState(FILE_NAME);
System.out.println(state);
}
private static void saveState(String state, String fileName) throws IOException {
try(PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(fileName)))) {
writer.println(state);
}
}
private static String readState(String fileName) throws IOException {
try(BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
return reader.readLine();
}
}
}
請注意,我用的嘗試,與資源的語句,只適用於Java 7(當然還有8)。如果你是在一箇舊版本的Java運行它,你必須寫的方法如下:
private static void saveState(String state, String fileName) throws IOException {
PrintWriter writer = null;
try {
writer = new PrintWriter(new BufferedWriter(new FileWriter(fileName)));
writer.println(state);
} finally {
if (writer != null)
writer.close();
}
}
private static String readState(String fileName) throws IOException {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(fileName));
return reader.readLine();
} finally {
if (reader != null)
reader.close();
}
}
r.close()你也應該需要關閉的BufferedReader以及的 –
可能重複[文件的作家不工作](http://stackoverflow.com/questions/11888496/file-writer-doesnt-work) – Raedwald