2013-07-12 81 views
0

我有一個Java應用程序需要將大量數據寫入文本文件中的各行。我寫了下面的代碼來做到這一點,但由於某種原因,它沒有寫任何文本文件。它確實創建了文本文件,但程序運行完畢後文本文件保持空白。任何人都可以告訴我如何修正下面的代碼,以便它實際上用輸出文件填充輸出文件所需的行數?使用PrintWriter將字符串寫入日誌文件

public class MyMainClass{  
    PrintWriter output; 

    MyMainClass(){  
     try {output = new PrintWriter("somefile.txt");}  
     catch (FileNotFoundException e1) {e1.printStackTrace();}  
     anotherMethod(); 
    }  

    void anotherMethod(){ 
     output.println("print some variables"); 
     MyOtherClass other = new MyOtherClass(); 
     other.someMethod(this); 
    } 
} 

public class MyOtherClass(){ 
    void someMethod(MyMainClass mmc){ 
     mmc.output.println("print some other variables") 
    } 
} 

回答

1

你好嗎去做這件事對我來說似乎很奇怪。你爲什麼不寫一個方法接受一個字符串,然後寫入你的文件?像這樣的東西應該很好地工作

public static void writeToLog(String inString) 
{ 
    File f = new File("yourFile.txt"); 
    boolean existsFlag = f.exists(); 

    if(!existsFlag) 
    { 
     try { 
      f.createNewFile(); 
     } catch (IOException e) { 
      System.out.println("could not create new log file"); 
      e.printStackTrace(); 
     } 

    } 

    FileWriter fstream; 
    try { 
     fstream = new FileWriter(f, true); 
     BufferedWriter out = new BufferedWriter(fstream); 
     out.write(inString+"\n"); 
     out.newLine(); 
     out.close(); 
    } catch (IOException e) { 
     System.out.println("could not write to the file"); 
     e.printStackTrace(); 
    } 


    return; 
} 
+0

+1和信用的答案。感謝您提供這樣一個好的解決方案。 – CodeMed

+0

@CodeMed沒問題,很高興它爲你工作。 – user2464620

1

使用其他構造函數:

output = new PrintWriter(new FileWriter("somefile.txt"), true); 

根據JavaDoc

public PrintWriter(Writer out, boolean autoFlush)

創建一個新的PrintWriter。

參數:

- 甲字符輸出流
自動沖洗 - 一個布爾值;如果爲true,println的,printf或format方法將刷新輸出緩衝區

1

使用其他構造new PrintWriter(new PrintWriter("fileName"), true)進行自動沖洗數據或使用 和flush()close()當你寫完