2016-09-01 6 views
-2

リストの内容をファイルに書きたいと思います。コードは理解しやすく、時には作業を行うことがあります。しかし、それが失敗する時代の大部分です。ファイルの末尾に書き込む

public void finishTheTest(String outputFileName) throws FileNotFoundException{ 
     StringBuilder testOutPutStringBuilder = new StringBuilder(); 

      if(!isFieldSuccessFull) { 
       testOutPutStringBuilder.append(System.getProperty("line.separator")); 
       testOutPutStringBuilder.append(System.getProperty("line.separator")); 
       testOutPutStringBuilder.append("Error for Task -> " + tm.getFieldHM(tm.getKey())); 
       testOutPutStringBuilder.append(System.getProperty("line.separator")); 
       testOutPutStringBuilder.append("*****************************************"); 
       testOutPutStringBuilder.append(System.getProperty("line.separator")); 
       for(String str : listFailure) { 
        testOutPutStringBuilder.append(str); 
        testOutPutStringBuilder.append(System.getProperty("line.separator")); 
       } 
       testOutPutStringBuilder.append("*****************************************"); 
       testOutPutStringBuilder.append(System.getProperty("line.separator")); 
      } 
      if(!isCinematicSuccessFull) { 
       testOutPutStringBuilder.append(System.getProperty("line.separator")); 
       testOutPutStringBuilder.append(System.getProperty("line.separator")); 
       testOutPutStringBuilder.append("Error for Repository -> " + tm.getFieldHM(tm.getKey())); 
       testOutPutStringBuilder.append(System.getProperty("line.separator")); 
       testOutPutStringBuilder.append("*****************************************"); 
       testOutPutStringBuilder.append(System.getProperty("line.separator")); 
       testOutPutStringBuilder.append("Cinematic error."); 
       testOutPutStringBuilder.append(System.getProperty("line.separator")); 
       testOutPutStringBuilder.append("*****************************************"); 
       testOutPutStringBuilder.append(System.getProperty("line.separator")); 
      } 
      try(PrintStream ps = new PrintStream(new FileOutputStream(outputFileName, true))) { 
       System.out.println(testOutPutStringBuilder); 
      ps.println(testOutPutStringBuilder.toString()); 
     } 

を私はStringBuilderのを構築するために文字列のリストを閲覧していますか私は単にのStringBuilderに文字列を追加します。これは私がこれまで試したものです。それから私は標準出力に印刷しています。そして、指定したファイルに出力します。ファイルは作成されますが、コードの実行後も空のままです。私はFileOutputStreamの作成時に "true"を指定していたので、ファイルの末尾にテキストが追加されることを期待しました。しかし、コードを2回以上実行すると、ファイルに何も残っていません。

紛失しているものがありますか?

+0

例外がスローされていますか? –

+0

いいえ例外はありません –

+0

'testOutPutStringBuilder.toString()。isEmpty()'がtrueであるかどうかチェックしましたか? – ArcticLord

答えて

0

あなたがしよう - と、リソース抑制例外の可能性を開いたまま、使用している:

https://docs.oracle.com/javase/8/docs/technotes/guides/language/try-with-resources.html

あなたはここに

Do I have to close FileOutputStream which is wrapped by PrintStream?

受け入れ答えを見てみるとcatchブロックを追加して、欠落している例外がいくつか発生しているかどうかを確認できます。

あなたは一時的にこのような何かにあなたのコードを変更することができます:

public void finishTheTest(String outputFileName) throws Exception { 
    ... 
    try(PrintStream ps = new PrintStream(new FileOutputStream(outputFileName, true))) { 
    System.out.println(testOutPutStringBuilder); 
    ps.println(testOutPutStringBuilder.toString()); 
    } 
    catch (Exception e) { 
    System.out.println("Error in writing to file:"); 
    e.printStackTrace(); 
    throw e;   
    } 
    ... 
} 

それはあなたのtry()によってスローされた場合、あなたはすべての例外が表示されます。

+0

私は、抑制された例外についてのdoc部分を読んだだけです。私が理解しているように、ブロックによって複数の例外がスローされた場合、例外は1つだけスローされます。私は例外が発生していないので、私はその場合だとは思わない。 –

0

私は私の問題の解決策を見つけました。代わりに、私のファイルに書き込むために、これを使用する:

try(PrintStream ps = new PrintStream(new FileOutputStream(outputFileName, true))) { 
      ps.println(testOutPutStringBuilder.toString()); 
} 

私はこれを使用しています:

try(PrintWriter ps = new PrintWriter(new BufferedWriter(new FileWriter(outputFileName, true)))) { 
      ps.println(testOutPutStringBuilder.toString()); 

     } 

これは、しばらくの間、今からたびに取り組んでいます。私はまだ他のコードに何が間違っていたのか分かりません。

関連する問題