2016-05-31 13 views
0

こんにちは、PrintWriterを閉じた後に新しいコンテンツを追加できません。これを行う他の方法はありますか?PrintWriterを閉じた後で新しいHTMLコンテンツを書き込めません。

String myCurrentDir = System.getProperty("user.dir"); 
File htmlFile = new File(TestRunner.FilePath+"\\Footer.html"); 
final OutputStream out = new BufferedOutputStream(new FileOutputStream(htmlFile)); 
PrintWriter writer = new PrintWriter(out); 
writer.println("<HTML>");  
writer.println("<HEAD>"); 
writer.println("<title>Report Foot</title>"); 
writer.println("<link rel=\"stylesheet\" type=\"text/css\" href=\""+myCurrentDir+"/CSS/Report.CSS\">"); 
writer.println("</HEAD>"); 
writer.println("<body class = 'footer'>"); 
writer.println("<B>"); 
writer.println("Total : "+TotalTCs); 
writer.println("<span class='passed'>Passed : "+0+"</span>"); 
writer.println("<span class='failed'>Failed : "+0+"</span>"); 
writer.println("<span class='warned'>Warned : "+0+"</span>"); 
writer.println("<span class='norun'>No Run : "+0+"</span>"); 
writer.println("</B>"); 
writer.println("<BR/>"); 
writer.println("<BR/>"); 
writer.close();//after this any content doesn't gets saved in html  
writer.println("@ABC DEF XYZ"); 
writer.println("</body>"); 
writer.println("</HTML>"); 
writer.close(); 
System.out.println("Footer Written"); 
+2

どうして中央に閉じなければならないのですか? – stdunbar

+0

なぜあなたはまだそれを閉じた後にコンテンツを書くことができると思いますか? –

答えて

2

ストリームのライフサイクルである:PrintWriter::close() DOCから(close

を閉じる

  1. Createtion(new Stream
  2. 処理(writeappend、上のように)
  3. ストリームを閉じて、 に関連付けられているすべてのシステムリソースを解放します。

    PrintWriter::close()セットPrintWriter内部out = null。 終了後、writeflushprintなどのいずれの呼び出しでもIOExceptionが返されます。 これらのメソッドは何もする前にensureOpen()を呼び出します。

    private void ensureOpen() throws IOException { 
        if (out == null) 
         throw new IOException("Stream closed"); 
        } 
    } 
    
+0

Sergey Rybalkinの説明に感謝します –

関連する問題