2016-05-04 11 views
2

大きな文字列(1行)をファイルに印刷しようとしています。しかし、文字列はその間に切り詰められています。なぜこのようなことが起こっているのか?大きな文字列をファイルに書き込むことができません

void writeToFile(String schemaString,String message){ 

    try{ 
     FileWriter fw = new FileWriter("D:\\Servicelog.txt", true);      
     java.util.Date date= new java.util.Date(); 
     fw.write(new Timestamp(date.getTime())+"\n"); 
     fw.write(message+"\n");   
     fw.write("schemaBegins\n"+schemaString+"\n"+"schemaEnds"); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 

} 

答えて

7

ファイルを閉じてください。

FileWriter fw = null; 
try { 
    fw = new FileWriter("D:\\Servicelog.txt", true); 
    java.util.Date date = new java.util.Date(); 
    fw.write(new Timestamp(date.getTime()) + "\n"); 
    fw.write(message + "\n"); 
    fw.write("schemaBegins\n" + schemaString + "\n" + "schemaEnds"); 
} catch (Exception e) { 
    e.printStackTrace(); 
} finally { 
    if (fw != null) { 
     fw.close(); 
    } 
} 

Java7以降try-with-resourcesを使用して、そのメカニズムをカプセル化:任意のWriterへの書き込み

try (FileWriter fw = new FileWriter("D:\\Servicelog.txt", true)) { 
    java.util.Date date = new java.util.Date(); 
    fw.write(new Timestamp(date.getTime()) + "\n"); 
    fw.write(message + "\n"); 
    fw.write("schemaBegins\n" + schemaString + "\n" + "schemaEnds"); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

は、あなたがそれを閉じていない場合、未書き込みデータの一部を残して、バッファリングすることができます。

+0

何らかの理由で 'FileWriter'をすぐに終了したくない場合は、' fw.flush() 'を呼び出すとストリームをフラッシュします。 –

+0

私はそれを逃した方法を知りません。それを私に指摘してくれてありがとう。私はFileWrite、PrintWriterなどを分析する時間を無駄にしていました... – User27854

関連する問題