PrintWriter无法打印到文件

时间:2011-04-16 20:07:32

标签: java

文件正在成功创建,但我无法让PrintWriter在文本文件中打印任何内容。代码:

import java.io.File;
import java.util.Scanner;
import java.io.IOException;
import java.io.PrintWriter;

public class exams {
    public static void main (String[] args) throws IOException{
        Scanner scanner = new Scanner(System.in);
        System.out.println("How many scores were there?");
        int numScores = scanner.nextInt();
        int arr[] = new int[numScores];

        for (int x=0; x<numScores; x++){
            System.out.println("Enter score #" + (x+1));
            arr[x] = scanner.nextInt();
        }

        File file = new File("ExamScores.txt");
        if(!file.exists()){
           file.createNewFile();
           PrintWriter out = new PrintWriter(file);
            for (int y=0; y<arr.length; y++){
                out.println(arr[y]);
            }
        }
        else {
            System.out.println("The file ExamScores.txt already exists.");
        }   
    }
}

4 个答案:

答案 0 :(得分:24)

您必须刷新和/或关闭文件才能将数据写入磁盘。

在代码中添加out.close()

PrintWriter out = new PrintWriter(file);
for (int y=0; y<arr.length; y++){
    out.println(arr[y]);
}
out.close()

答案 1 :(得分:3)

您需要在程序退出之前关闭PrintWriter,这样可以刷新打印流以确保所有内容都写入文件。试试这个:

PrintWriter out = null;
try {
    //...
    out = new PrintWriter(file);
    //...
} finally {
    if (out != null) {
        out.close();
    }
}

答案 2 :(得分:2)

完成写入后,您需要刷新并关闭文件 http://download.oracle.com/javase/1.4.2/docs/api/java/io/PrintWriter.html void close()           关闭流。  void flush()           冲洗流。

答案 3 :(得分:-1)

printwriter类适用于不带文件的流,这就是您无法写入该文件的原因。您需要使用FileOutputStream创建文件,之后您将能够使用printwriter来写入该文件。试试这个:

FileOutputStream exam = new FileOutputStream(“ExamScores.txt”); PrintWriter out = new PrintWriter(exam,true);