【问题标题】:File I/O, Creation of Path with Constructor Variable文件 I/O,使用构造函数变量创建路径
【发布时间】:2019-01-12 07:47:09
【问题描述】:

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

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

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

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

我觉得我错过了一些关于路径机制或其他东西的东西,但我想不通。

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”错误。

感谢您的任何建议。

【问题讨论】:

    标签: java file io path


    【解决方案1】:

    这样的逻辑看起来代码太多了。无需获取目录中的所有文件。

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

    就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-26
      • 2011-11-21
      • 1970-01-01
      • 2011-04-14
      • 2012-01-23
      • 2012-03-13
      • 2016-12-01
      • 1970-01-01
      相关资源
      最近更新 更多