Java 文件 IO 异常

标签 java file io

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

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 中给定的路径处创建文件或文件夹(日志)。该路径正如我所期望的那样,并且我应该对该目录具有写入权限(我知道其他程序定期将日志等写入父目录)...我已经处理过一些文件以前,但已经有点了,我在这里完全不知所措。

我可能会遇到什么类型的问题?您建议采取哪些尝试来解决此问题?

最佳答案

当您使用文件夹时,必须确保该文件夹存在。

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

关于Java 文件 IO 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9838900/

相关文章:

java - 如何在 Spring 3/Thymeleaf 中显示带有参数的本地化消息

java - -XX :+PrintTenuringDistribution doesn't print size per age

java - 这有什么问题吗?在 eclipse 中遇到同样的错误

java - 如何从用户那里获取保存文件的路径?

c - rewind() 之后,您可以使 fprintf() 写入文件末尾吗(例如完全覆盖)

c++ - 如何在C++中将文件内容读入字符串

java - 如何将文件从一个文件夹移动到另一个文件夹

python - 将非文本文件读入 Python

javascript - 你如何编写非阻塞模块?

java - 每个 BufferedWriter 实例只有一个 FileWriter 实例?