У меня есть BufferedWriter
, который записывает некоторые данные в файл. В другом потоке файл может быть переименован с использованием метода nio Files.move
:
Path path = Paths.get( "name" );
BufferedWriter writer = new BufferedWriter( new FileWriter( path.toFile() ) );
writer.write( "some data\n" );
new Thread( () -> {
// do something
Files.move( path, path.resolveSibling( "newName" ) );
} ).start();
// do something
writer.write( "more data\n" );
writer.close();
Я немного протестировал, и он всегда работал нормально, но мне может повезти, так что мой вопрос: это потокобезопасный вызов метода move
, в то время как другой поток может записать в файл? Если нет, нужно ли синхронизировать операции перемещения и записи или есть более эффективный способ?