Java文件IO异常

Java文件IO异常,java,file,io,Java,File,Io,我正在尝试创建一个简单的程序,它将保存收集数据的文本日志。为了进行设置,我在程序开始时运行了以下代码(用于设置日志文件和使用它的工具): 当我运行这个程序时,我遇到了两个异常。它不会按照第一个println中给定的路径创建文件或文件夹(日志)。路径和我期望的一样,我应该拥有该目录的写入权限(我知道其他程序经常将日志等写入父目录)。。。我以前处理过一点文件,但现在已经有一点了,我在这里完全不知所措 我可能会遇到什么样的问题?您建议如何解决此问题?处理文件夹时,必须确保文件夹存在 为此,您必须在lo

我正在尝试创建一个简单的程序,它将保存收集数据的文本日志。为了进行设置,我在程序开始时运行了以下代码(用于设置日志文件和使用它的工具):

当我运行这个程序时,我遇到了两个异常。它不会按照第一个println中给定的路径创建文件或文件夹(日志)。路径和我期望的一样,我应该拥有该目录的写入权限(我知道其他程序经常将日志等写入父目录)。。。我以前处理过一点文件,但现在已经有一点了,我在这里完全不知所措


我可能会遇到什么样的问题?您建议如何解决此问题?

处理文件夹时,必须确保文件夹存在

为此,您必须在
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");
    }
}