Если я запускаю ваш код без Client
, он работает как положено.
Причина, по которой вы все еще видите, что ваш file.txt
открыт, заключается в том, что это НЕ ваш начальный file.txt
.Это переименованное tmpFile.txt
, которое теперь называется file.txt
.
С кодом ниже у вас есть файл, который был переименован с tmpFile.txt
на file.txt
, и он содержит "HALLO \ n".Исходный файл file.txt
фактически удален и больше не существует.- это ожидаемое поведение.
public static void main(String[] args) throws Exception {
File file = new File("src/file.txt");
File tmpFile = new File("src/tmpFile.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
BufferedWriter writer = new BufferedWriter(new FileWriter(tmpFile));
try{
writer.write("HALLO" + "\n");
}
finally {
writer.close();
reader.close();
}
file.delete();
tmpFile.renameTo(file);
/*File oldFile = new File("tmpFile.txt");
File newFile = new File(oldFile.getParent(), "file.txt");
Files.move(oldFile.toPath(), newFile.toPath());*/
}