如何使用构造函数变量创建路径和文件
我正在为我的学校编写一个简单的日志应用程序。当我初始化用于日志记录的名称变量时,应用程序可以正常工作。
但是,当我使用构造函数中给定的不同名称创建实例时,程序会在创建新的日志文件之前转到实例变量来创建空日志文件。
此外,当我重新运行应用程序时,它总是给出一个异常,文件已被发现,但据我所知,这应该在我的代码中的循环中解决。
我觉得我错过了一些关于路径机制或其他东西的东西,但我无法弄清楚。
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/