java - 文件 I/O,使用构造函数变量创建路径

标签 java file io path

如何使用构造函数变量创建路径和文件

我正在为我的学校编写一个简单的日志应用程序。当我初始化用于日志记录的名称变量时,应用程序可以正常工作。

但是,当我使用构造函数中给定的不同名称创建实例时,程序会在创建新的日志文件之前转到实例变量来创建空日志文件。

此外,当我重新运行应用程序时,它总是给出一个异常,文件已被发现,但据我所知,这应该在我的代码中的循环中解决。

我觉得我错过了一些关于路径机制或其他东西的东西,但我无法弄清楚。

private String name;
private int logLevel;
private Path path = checkPreviousVersions();


protected FlexibleLogger(String name,int logLevel) throws IOException {
    this.logLevel = logLevel;
    this.name=name;
        }

public Path checkPreviousVersions() throws IOException{

    List<String> results = new ArrayList<>();
    List<String> fresults = new ArrayList<>();
    File[] files = new File("./logs").listFiles();

    for (File file: files) {
        if (file.isFile()) {
            results.add(file.getName());
        }
    }

    for (String result: results){
        fresults.add(result.replace(result,result.substring(0,result.indexOf("."))));
    }

    if (fresults.contains(name)) {
        Path mypath = Paths.get("./logs/" + name + ".log");
        String s = "=======================" + dateFormatter() + "=======================" + "\n";
        writeToFile(s);
        return mypath;


    } else {
        Path mypath = Paths.get("./logs/" + name + ".log");
        Files.createFile(mypath);
        return mypath;

    }

}

预期结果是第一次创建一个文件,每次更改名称时都会生成一个新文件。如果名称未更改,则应更新现有文件。

实际结果是创建两个文件,一个为“null”,另一个包含构造函数名称变量。在具有相同名称的第二个循环中,它给出“FileAlreadyExists”错误。

非常感谢您的建议。

最佳答案

对于这样的逻辑来说,代码似乎太多了。无需获取目录中的所有文件。

这是一个简单的方法: - 创建新文件(“./logs”,名称) - 检查文件是否存在:if (file.exists()) - 如果不存在,则创建它 - 将您的文本附加到其中

就是这样。

关于java - 文件 I/O,使用构造函数变量创建路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54157699/

相关文章:

c# - 使用 C# 在 Little 或 Big Endian 中写入/读取二进制数据的最佳方法?

java - BufferedOutputStream 与 ByteArrayOutputStream

java - Maven 停止下载依赖项并显示请求目标的有效证书路径

java - 使用扫描仪创建对象标识符?

javascript - "Cross origin requests are only supported for HTTP."加载本地文件时出错

python - python 3 中的文件读写

java 如何将字符串发送到服务器(jave.net/sockets)

syntax - io :format and io:fwrite in Erlang? 有什么区别

java - 在java中访问嵌套的elasticsearch字段

java - "Internal error: Unexpected failure when preparing tensor allocations"- Firebase MLKIT - Android - 本地模型加载失败