[英]Try Catch logic error with file i/o in Java
因此,我一直在尝试从各种来源学习Java,我已经学习了大约2年。 到目前为止,一切都进行得很顺利,我已经有一段时间没有发布过stackoverflow了。 最近,我一直在尝试弄清楚如何使用java创建和读取文件。 我可以在单独的应用程序中同时执行这两项操作,但是当我尝试执行这两项操作时并不总是有效。
我想发生的事情:我希望程序创建data.txt
,然后希望它读取数据并在error.txt
上产生错误日志。
发生的情况:data.txt文件已按预期创建,但是没有任何内容写入error.txt文件。 我在获取try / catch块及其工作原理方面遇到麻烦。 任何人有任何想法吗? 即使只是一些建议也将不胜感激。 谢谢!
import java.io.*;
import java.util.Scanner;
public class dataReader {
public static void main(String args[]) throws Exception {
File fileName;
fileName = new File("data.txt");
PrintWriter outputFile;
outputFile = new PrintWriter(fileName);
File errorFile;
errorFile = new File("errors.txt");
PrintWriter outputErrorFile;
outputErrorFile = new PrintWriter(errorFile);
Scanner inputFile;
int recordNumber = 0;
String inputData;
outputFile.println(77);
outputFile.println("Fred");
outputFile.println(92);
outputFile.println("Wilma");
outputFile.println(89.9);
outputFile.println("Barney");
outputFile.println(42);
outputFile.println("BettyS");
inputFile = new Scanner(fileName);
while (inputFile.hasNext()) {
recordNumber++;
try {
inputData = inputFile.nextLine();
if (Integer.parseInt(inputData) < 50) {
outputErrorFile.println(recordNumber + ", " + inputData + ", is less than 50.");
} else if (Integer.parseInt(inputData) > 90) {
outputErrorFile.println(recordNumber + ", " + inputData + ", is less than 50.");
}
} catch (Exception e) {
outputErrorFile.println(recordNumber + ", That's not an integer.");
}
}
outputFile.close();
outputErrorFile.close();
System.out.println("Program terminated.");
}
}
移动outputFile.close();
inputFile = new Scanner(fileName);
之前的行inputFile = new Scanner(fileName);
。 目前,它只是缓存在内存中,实际上并未写入磁盘。
PrintWriter的文档说明了一切。 PrintWriter(Writer)构造函数创建一个不会自动刷新的writer。
您必须调用close或flush方法将数据写入文件。
因此,您必须使用outputFile.close();
开始阅读之前的方法。
作为一种好习惯,您必须关闭所有PrintWriter
实例,以避免内存泄漏。
仅在这种情况下,请添加inputFile.close();
在程序结束时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.