Java PrintWriter无法打印到文件

Java PrintWriter无法打印到文件,java,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 scan

文件已成功创建,但我无法让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.");
        }   
    }
}
导入java.io.File;
导入java.util.Scanner;
导入java.io.IOException;
导入java.io.PrintWriter;
公开课考试{
公共静态void main(字符串[]args)引发IOException{
扫描仪=新的扫描仪(System.in);
System.out.println(“有多少分数?”);
int numcores=scanner.nextInt();
int arr[]=新的int[numcores];

对于(int x=0;x,您必须刷新和/或关闭文件以将数据写入磁盘

在代码中添加
out.close()

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

对于(int y=0;y,您需要在程序退出之前关闭PrintWriter,该程序具有刷新打印流的效果,以确保所有内容都写入文件。请尝试以下操作:

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

一旦完成写入,您需要刷新并关闭文件 无效关闭() 关闭小溪。 无效刷新()
刷新流。

printwriter类可用于流而不是文件,这就是您无法写入该文件的原因。您需要使用FileOutputStream创建文件,然后才能使用printwriter写入该文件。请尝试以下操作:

PrintWriter out = null;
try {
    //...
    out = new PrintWriter(file);
    //...
} finally {
    if (out != null) {
        out.close();
    }
}
FileOutputStream检查=新的FileOutputStream(“examCores.txt”);
PrintWriter out=new PrintWriter(考试,正确);

谢谢!我知道它很小。try with resources语法(Java 7以后)更简单、更可靠。这完全是错误信息。PrintWriter确实处理文件。请参阅上面pajton的答案。OP遗漏了out.close()语句,以刷新缓冲区。调用out.close()后,PrintWriter会将缓冲输出写入文件。