2014-11-08 232 views
0

我正嘗試使用通過命令行運行配置給出的原始路徑寫入文件。不過,我很難將這些部分放在一起。我試圖通過Report類構造函數傳遞文件名,然後使用它來使用打印方法寫入文件。我究竟做錯了什麼?對不起,我對java很不好...如何通過命令行向文本文件寫入文件?

public static void main(String[] args) throws IOException { 
     String roadFilename = args[0]; 
     String cellNetworkFilename = args[1]; 
     String imageFilename = args[2]; 
     String reportFilename = args[3]; 

    Report report = new Report( 
       new java.io.File(reportFilename) 
       ); 
     report.add(message); 
     report.write(); 
     cellNetwork.hasCoverage(roadNetwork); 
    } 


public class Report { 
    String mess; 
    java.util.ArrayList<String> something = new java.util.ArrayList<String>(); 
    File file; 
    private PrintWriter print; 
    public Report(File file) { 


     this.file=file; 
     // TODO Auto-generated constructor stub 
    } 

    public void add(String message) { 

     something.add(message); 

    public void write() { 


     try { 
      print = new PrintWriter( 
        new BufferedWriter(
          new FileWriter(file))); 
      print.println(something); 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      //   e.printStackTrace(); 
      System.exit(0); 
     } 
+0

1)爲什麼不關閉文件?2)爲什麼'e.printStackTrace();'註釋掉了? – immibis 2014-11-08 08:18:06

回答

0

您需要打印ArrayList的內容,它包含您添加的消息。不是ArrayList本身。試圖像這樣打印:

print.println(something); 

將導致指針字符串被打印到文件而不是內容。

您可能需要遍歷數組列表並逐行打印其內容。

for(String string: something) { 
    print.println(string); 
} 
0

您忘記關閉最後的PrintWriter。

try { 
    print = new PrintWriter(new BufferedWriter(new FileWriter(file))); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
if(print != null) { 
    print.println(something); 
    print.close(); 
} 
相關問題