[英]Blank file after writing to it?
所以我一直在嘗試為我的一個朋友寫一個Bukkit插件,由於某種原因,配置生成不起作用。 有問題的代碼如下,我很樂意添加人們需要幫助我的任何代碼。 當我運行該程序時,創建的配置文件最終為空白。 測試文件很好(我通過簡單地注釋掉刪除文件的行來測試)但是一旦我嘗試獲得多行就失敗了。 有人可以幫忙嗎?
PrintWriter out = new PrintWriter(new FileWriter(config));
out.println("########################################");
out.println("# hPlugin is written by newbiedoodle #");
out.println("########################################");
out.println("# ----- Plugin config file ----- #");
out.println("########################################");
out.println("NOTE: Do not edit the config file besides changing the values - it may result in errors.");
out.println("--------------");
out.println("Strikes before being banned?");
out.println("3");
out.println("Godmode?");
out.println("true");
out.println("First time running the plugin?");
out.println("true");
out.println("Curse protection?");
out.println("true");
out.println("Emergency shelter?");
out.println("true");
out.println("Path building?");
out.println("true");
out.println("Blocked words/phrases (Separate with comma)");
out.println("[censored]");
out.close();
System.out.println("Successfully wrote defaults to config");
整個事情都包含在try / catch循環中,以捕獲可能彈出的任何錯誤。 我覺得我錯過了一些非常明顯的東西,但我找不到它是什么。
config
是一個File
對象,它具有它需要的路徑,所以我不認為就是這樣
我讓程序幾乎完全分開,這樣我就可以准確地告訴用戶錯誤發生的位置,因此文件就在try
/ catch
之外創建。
你需要打電話......
out.flush();
......就在你打電話之前......
out.close();
PrintWriter使用內存中的緩沖區來更有效地使用磁盤。 您需要調用flush()來告訴PrintWriter寫入您的數據。
您很可能不止一次運行此操作並且您正在寫入一個文件並檢查另一個文件。 我懷疑文件名是相同的,但目錄,可能基於工作目錄不是你想象的那樣。
在這種情況下關閉調用flush,因為PrintWriter使用BufferedWriter而另一個Writer類沒有緩沖。
251 public void flush() throws IOException {
252 synchronized (lock) {
253 flushBuffer();
254 out.flush();
255 }
256 }
257
258 public void close() throws IOException {
259 synchronized (lock) {
260 if (out == null) {
261 return;
262 }
263 try {
264 flushBuffer();
265 } finally {
266 out.close();
267 out = null;
268 cb = null;
269 }
270 }
271 }
完成后,您需要刷新或關閉流。 在退出之前,兩者都非常重要。 關閉將自動調用flush()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.