我正在尝试创建一个简单的程序,用于保存收集数据的文本日志。为了进行设置,我在程序开始时运行以下代码(设置日志文件,以及使用它的工具):
File logFile = new File("logs/logFile.txt");
FileWriter fw;
FileReader fr;
BufferedWriter writer;
BufferedReader reader;
public void someMethod(){
System.out.println(logFile.getAbsolutePath());
try{
logFile.createNewFile();
}catch(Exception e){
System.err.println("WARNING: CANNOT CREATE FILE");
}
try{
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");
}
}
当我运行时,我遇到了两个异常。它不会在第一个println中给出的路径上创建文件或文件夹(日志)。路径就像我期望的那样,我应该对该目录具有写权限(我知道其他程序经常将日志写入父目录这一事实)...我已经使用了一些文件之前,但它已经有点了,我在这里完全失去了。
我可能遇到什么样的问题?你会建议尝试解决这个问题吗?
答案 0 :(得分:2)
使用文件夹时,必须确保该文件夹存在。
为此你必须在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");
}
}
答案 1 :(得分:0)