Как создать путь и файл, используя переменные конструктора
Я пишу простое приложение для регистрации в моей школе. Когда я инициализирую переменную 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;
}
}
Ожидаемый результат - один файл для первого создания и новый файл при каждом изменении имени. Если имя не изменилось, следует обновить существующий файл.
Фактическим результатом является создание двух файлов, одного с нулевым значением и одного с переменной имени конструктора. Во втором цикле с тем же именем выдается ошибка «FileAlreadyExists».
Спасибо за любые советы.