Java PrintWriter无法打印到文件
文件已成功创建,但我无法让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
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会将缓冲输出写入文件。