Что происходит, когда вы одновременно открываете два (или более) файла FileOutputStreams в одном файле?Параллельный файл записи в Java на Windows
Java API говорит, что это:
Некоторые платформы, в частности, разрешить файл, который будет открыт для записи только один FileOutputStream (или другого объекта записи файла), в то время.
Я предполагаю, что Windows не такая платформа, потому что у меня есть два потока, которые читают большой файл (каждый другой), а затем записывают его в тот же выходной файл. Исключение не генерируется, файл создается и, как представляется, содержит куски из обоих входных файлов.
Боковые вопросы:
- Является ли это верно для Unix, тоже?
- И так как я хочу, чтобы поведение было одинаковым (на самом деле я хочу, чтобы один поток правильно писал, а другой - о конфликте), как я могу определить, что файл уже открыт для записи?
Но я не хочу блокировать всякий раз, когда пишу, я хочу заблокировать, если кто-то уже пишет в файл, который я хочу написать. На самом деле, я не хочу вообще блокировать. Я хочу рассказать второй поток, который он не может написать, и позволить клиенту принять решение о дальнейших действиях. –
CHeck, который блокирует API. Вы сможете проверить блокировку, чтобы определить, заблокировал ли кто-то другой ее (т. Е. Не бок), а затем решить, что делать –