我刚刚开始使用 Murach 的 Se 6 中的示例进行文件 I/O 和im 操作。 这是我的代码。我错过了什么吗?我知道后面的代码还有更多内容,但因为这是一个示例,所以应该可以正常工作吗?
//Import import java.io.*; for use with the File I/O Methods.
import java.io.*;
public class MainApp
{
public static void main(String[] args)
{
//Create a file object.
File productFile = new File("product.txt");
//Open a buffered output stream to allow write to file operations.
PrintWriter out = new PrintWriter(
new BufferedWriter(
new FileWriter(productFile)));
out.println("java\tMurach's Beginning Java 2\t$49.99");
out.close();
BufferedReader in = new BufferedReader(
new FileReader(productFile));
String line = in.readLine();
System.out.println(line);
out.close();
}
}
//回答
通过在我初始化主代码的末尾添加一个抛出异常,该代码可以工作。甚至 txt 文件 products.txt 也按预期位于类文件夹中。 //导入导入java.io.*;与文件 I/O 方法一起使用。
import java.io.*;
public class MainApp
{
public static void main(String[] args) throws Exception
{
//Create a file object.
File productFile = new File("product.txt");
//Open a buffered output stream to allow write to file operations.
PrintWriter out = new PrintWriter(
new BufferedWriter(
new FileWriter(productFile)));
out.println("java\tMurach's Beginning Java 2\t$49.99");
out.close();
BufferedReader in = new BufferedReader(
new FileReader(productFile));
String line = in.readLine();
System.out.println(line);
out.close();
}
}
最佳答案
问题是对 java.io 包的许多调用都会抛出异常。
简单修复:将以下内容添加到您的方法签名中
public static void main(String[] args) throws IOException
几乎同样简单的修复:添加 try/catch/finally block 。
public static void main(String[] args)
{
//Create a file object.
File productFile = new File("product.txt");
//Open a buffered output stream to allow write to file operations.
PrintWriter out = null;
try {
out = new PrintWriter(
new BufferedWriter(
new FileWriter(productFile)));
out.println("java\tMurach's Beginning Java 2\t$49.99");
}
catch(IOException ex) {
// todo exception handling
System.out.println("ERROR! " + ex);
}
finally {
out.close();
}
BufferedReader in = null;
try {
in = new BufferedReader(
new FileReader(productFile));
String line = in.readLine();
System.out.println(line);
}
catch (IOException ex) {
// todo more exception handling
System.out.println("ERROR! " + ex);
}
finally {
in.close();
}
}
编辑:您知道您正在尝试调用 out.close()
两次吗?第二个应该是调用 in.close()
关于java - 文件 I/O 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10436494/