2013-01-24 65 views
1

我傳遞一個文件路徑到這個方法,它寫入了txt文件。但是當我運行這個程序時,它並沒有寫滿,我不知道我犯了什麼錯誤。用Java寫入文件。幫我編碼

public void content(String s) { 
    try { 
    BufferedReader br=new BufferedReader(new FileReader(s)); 
    try { 
     String read=s; 
     while((read = br.readLine()) != null) {  
     PrintWriter out = new PrintWriter(new FileWriter("e:\\OP.txt")); 
     out.write(read); 
     out.close(); 
     } 
    } catch(Exception e) { }  
    } catch(Exception e) { } 
} 
+5

你不應該只是默默地發現異常。然後你可能會得到一個有意義的錯誤信息 – RoflcoptrException

+0

只是一些字符被寫在輸出文件上。不是全部內容。有什麼問題? – ankitaloveroses

+0

這是Google的結局嗎? – Shashi

回答

0

試試這個

public void content(String s) throws IOException { 
     try (BufferedReader br = new BufferedReader(new FileReader(s)); 
       PrintWriter pr = new PrintWriter(new File("e:\\OP.txt"))) { 
      for (String line; (line = br.readLine()) != null;) { 
       pr.println(line); 
      } 
     } 
} 
+0

非常好,非常感謝Evgeniy:D。是的,我正在使用J7。 :d – ankitaloveroses

1

閉上你的PrintWriter內部終於阻止了側循環

finally { 

     out.close(); 
    } 
7

你不應該創建PrintWriter的內循環每次:

public void content(String s) { 
    BufferedReader br=new BufferedReader(new FileReader(s)); 

    try { 
     PrintWriter out=new PrintWriter(new FileWriter("e:\\OP.txt")); 
     String read=null; 

     while((read=br.readLine())!=null) { 
     out.write(read); 
     } 
    } catch(Exception e) { 
     //do something meaningfull} 
    } finally { 
     out.close(); 
    } 
} 

的方法,另外,如其他人所說添加finally塊,不要默默捕捉異常,並遵循Java編碼約定。

+0

http://stackoverflow.com/a/14504685/2003348 這個答案是答案。尼斯。由於你的編碼沒有正確對齊格式化OP文件。這個答案解決了我的問題:D – ankitaloveroses

0

您的交易流。所以要麼把它變成

<code> 
finally { 
out.close(); 
} 
</code> 

or see this simple example 

<code>try { 
    String content = s; 
    File file = new File("/filename.txt"); 

    // if file doesnt exists, then create it 
    if (!file.exists()) { 
    file.createNewFile(); 
    } 

    FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
    BufferedWriter bw = new BufferedWriter(fw); 
    bw.write(content); 
    bw.close(); 
    System.out.println("Done"); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
    } 
</code>