web-dev-qa-db-ja.com

BufferedWriterを使用してJava

私は、外部ファイルを読み込み、データに関する統計を取得してから、統計を使用して新しいファイルを作成および書き込む必要があるラボを行っています。私のプログラムのすべては、ファイルの書き込みを除いて機能します。ファイルの書き込みは、私のメソッドが機能しない理由を理解できません。

BufferedWriter writer;

public void writeStats(int Word, int numSent, int shortest, int longest, int average)
{
    try
    {
        File file = new File("jefferson_stats.txt");
        file.createNewFile();

        writer = new BufferedWriter(new FileWriter(file));

        writer.write("Number of words: " + Word );
        writer.newLine();
        writer.write("Number of sentences: " + numSent );
        writer.newLine();
        writer.write("Shortest sentence: " + shortest + " words");
        writer.newLine();
        writer.write("Longest sentence: " + longest + " words");
        writer.newLine();
        writer.write("Average sentence: " + average + " words");    
    }
    catch(FileNotFoundException e)
    {
        System.out.println("File Not Found");
        System.exit( 1 );
    }
    catch(IOException e)
    {
        System.out.println("something messed up");
        System.exit( 1 );
    }
}
5
Paidenwaffle

ライターをフラッシュして閉じる必要があります。

writer.flush();
writer.close();
18
BackSlash

Java 7 try-with-resourcesを使用して、開いているリソースを明示的または暗黙的に閉じる必要があります。

    try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
         ...            
    }

その上、テキストを書くためのより便利なクラスがあります-Java.io.PrintWriter

try (PrintWriter pw = new PrintWriter(file)) {
    pw.println("Number of words: " + Word);
    ...
}
3
0
PermGenError