我正在尝试写入文件,然后从同一个文件中读取。输出为“错误:I / O异常”。意味着程序正在捕获IOException。
public class fileIO {
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
File file = new File("io.txt");
BufferedReader read = new BufferedReader(new FileReader(file));
BufferedWriter write = new BufferedWriter(new FileWriter(file));
String needs = "This is going to the file";
write.write(needs);
String stuff = read.readLine();
while(stuff != null)
{
System.out.println(stuff);
stuff = read.readLine();
}
}
catch(IOException e)
{
System.out.println("Error: I/O Exception");
}
catch(NullPointerException e)
{
System.out.println("Error: NullPointerException");
}
}
}'
答案 0 :(得分:0)
您无法同时读取和写入文件,这将抛出IOException
。在尝试使用其他内容访问文件之前,您应该关闭任何有权访问该文件的内容。在尝试使用close()
访问文件之前,在BufferedWriter
上调用BufferedReader
方法应该可以解决问题。
编辑:此外,正如其他人所提到的,您可以使用e.printStackTrace()
查看程序中发生异常的位置,这在调试时非常有用。
编辑:正如zapl澄清的那样,某些文件系统就是这种情况,包括Windows,但不是全部。我假设您使用的文件系统限制了它,因为它似乎是最可能的问题。
答案 1 :(得分:0)
我将BufferedReader移动到我关闭BufferedWriter的地方之后就完成了。谢谢你的帮助。
public class fileIO {
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
File file = new File("io.txt");
BufferedWriter write = new BufferedWriter(new FileWriter(file));
String needs = "This is going to the file";
write.write(needs);
write.close();
BufferedReader read = new BufferedReader(new FileReader(file));
String stuff = read.readLine();
while(stuff != null)
{
System.out.println(stuff);
stuff = read.readLine();
}
read.close();
}
catch(IOException e)
{
System.out.println("Error: I/O Exception");
e.printStackTrace();
}
catch(NullPointerException e)
{
System.out.println("Error: NullPointerException");
e.printStackTrace();
}
}
}