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

时间:2019-01-12 07:47:10

标签: java file io path

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

我正在为学校编写一个简单的日志记录应用程序。当我初始化用于记录的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”,另一个为带有构造函数name变量的文件。在具有相同名称的第二个循环中,它会显示“ FileAlreadyExists”错误。

谢谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

对于这种逻辑,看起来好像有太多的代码。无需获取目录中的所有文件。

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

就是这样。