2013-05-21 38 views
1

我寫了一個代碼,讀取網頁並將它們傳輸到.txt文件中。問題是輸出文件(something.txt)是LOCKED(如果有幫助,我使用OS X)。我發現可能存在未封閉的BufferedReader()的問題,但它似乎是關閉的。謝謝。閉合BufferedReader()?

PrintStream ps = new PrintStream(new File("/Users/MyName/Desktop/something.txt")); 
URL myUrl = new URL("webPage"); 
BufferedReader in = new BufferedReader(new InputStreamReader(myUrl.openStream())); 
String inputLine; 
while ((inputLine = in.readLine()) != null) { 
    ps.println(inputLine); 
    System.out.println(inputLine); 
} 
in.close(); 
ps.close(); 
+1

這應該是簡單的測試 - 改變你的輸出文件名。如果你的理論是正確的,它會一次工作,然後再次失敗。 –

+0

輸出文件仍然被鎖定。 – slanecek

回答

1

如果你在Java 7中那麼最好的辦法是try-with-resources這保證了雙方inps將被關閉

try (PrintStream ps = new PrintStream(new File("/Users/MyName/Desktop/something.txt")); 
      BufferedReader in = new BufferedReader(new InputStreamReader(
        new URL("webPage").openStream()))) { 
     String inputLine; 
     while ((inputLine = in.readLine()) != null) { 
      ps.println(inputLine); 
      System.out.println(inputLine); 
     } 
    } 
1

也許在你的讀/寫循環中拋出異常。如果發生這種情況,close()調用不會發生,這可以解釋您的問題,如果您在程序的單次運行中重新使用相同的文件名。

修復這個問題,在finally塊中執行close(),使用包裝讀/寫循環的try。