Java文件IO异常
我正在尝试创建一个简单的程序,它将保存收集数据的文本日志。为了进行设置,我在程序开始时运行了以下代码(用于设置日志文件和使用它的工具): 当我运行这个程序时,我遇到了两个异常。它不会按照第一个println中给定的路径创建文件或文件夹(日志)。路径和我期望的一样,我应该拥有该目录的写入权限(我知道其他程序经常将日志等写入父目录)。。。我以前处理过一点文件,但现在已经有一点了,我在这里完全不知所措Java文件IO异常,java,file,io,Java,File,Io,我正在尝试创建一个简单的程序,它将保存收集数据的文本日志。为了进行设置,我在程序开始时运行了以下代码(用于设置日志文件和使用它的工具): 当我运行这个程序时,我遇到了两个异常。它不会按照第一个println中给定的路径创建文件或文件夹(日志)。路径和我期望的一样,我应该拥有该目录的写入权限(我知道其他程序经常将日志等写入父目录)。。。我以前处理过一点文件,但现在已经有一点了,我在这里完全不知所措 我可能会遇到什么样的问题?您建议如何解决此问题?处理文件夹时,必须确保文件夹存在 为此,您必须在lo
我可能会遇到什么样的问题?您建议如何解决此问题?处理文件夹时,必须确保文件夹存在 为此,您必须在
logFile.createNewFile()之前编写一个条件
检查文件夹是否存在,因为createNewFild不会创建文件夹
你必须像这样修改程序
File logFileFolder = new File("logs");
File stalkerFolder = new File("plugins/Stalker");
File logFile = new File("logs/logFile.txt");
FileWriter fw;
FileReader fr;
BufferedWriter writer;
BufferedReader reader;
public void someMethod(){
System.out.println(logFile.getAbsolutePath());
try{
if (!logFileFolder.exists()){
// Create folder if does not exist
logFileFolder.mkdir();
}
logFile.createNewFile();
}catch(Exception e){
System.err.println("WARNING: CANNOT CREATE FILE");
}
try{
if (!stalkerFolder.exists()){
// Create folders if does not exist
stalkerFolder.mkdirs();
}
fw = new FileWriter("plugins/Stalker/log.txt");
fr = new FileReader("plugins/Stalker/log.txt");
writer = new BufferedWriter(fw);
reader = new BufferedReader(fr);
} catch(Exception e){
System.err.println("ERROR: CANNOT READ OR WRITE TO LOG FILE");
}
}
您可以使用
文件
中提供的存在
方法来测试它是否存在
如果我没记错的话,FileWriter
会创建一个不存在的文件。检查其他构造函数的附加
但是,我认为您面临的问题是,在尝试读取文件之前,您还没有结束编写文件
为了刷新到流,您需要调用
此外,正如Ravindra Gullapalli提到的,在尝试创建文件之前,还需要检查文件夹是否存在。如果没有,您需要使用方法创建它们。您遇到的问题包括在您得到的异常中,您只需要打印它们。在catch块中使用
e.printStackTrace()
。绝对路径是否存在?您运行的是类似Unix的操作系统吗?如果您实际打印了执行选项的消息,您将知道该怎么做,而不是打印错误消息。使用e.getMessage()
而不是您自己打印的没有帮助的消息。
File logFileFolder = new File("logs");
File stalkerFolder = new File("plugins/Stalker");
File logFile = new File("logs/logFile.txt");
FileWriter fw;
FileReader fr;
BufferedWriter writer;
BufferedReader reader;
public void someMethod(){
System.out.println(logFile.getAbsolutePath());
try{
if (!logFileFolder.exists()){
// Create folder if does not exist
logFileFolder.mkdir();
}
logFile.createNewFile();
}catch(Exception e){
System.err.println("WARNING: CANNOT CREATE FILE");
}
try{
if (!stalkerFolder.exists()){
// Create folders if does not exist
stalkerFolder.mkdirs();
}
fw = new FileWriter("plugins/Stalker/log.txt");
fr = new FileReader("plugins/Stalker/log.txt");
writer = new BufferedWriter(fw);
reader = new BufferedReader(fr);
} catch(Exception e){
System.err.println("ERROR: CANNOT READ OR WRITE TO LOG FILE");
}
}