Проверьте, открыт ли файл уже

Быстрое преобразование Фурье — FFT и это являются техникой Cooley-Tukey, потребует, чтобы использование укусило операции смещения.

49
задан Paolo Forgia 19 October 2017 в 21:00
поделиться

2 ответа

(Вопросы и ответы касаются того, как бороться с блокировками «открытых файлов» Windows ... а не о том, как реализовать этот вид блокировки переносимо.)

Вся эта проблема чревата проблемами переносимости и условиями гонки:

  • Вы можете попробовать использовать FileLock, но он не обязательно поддерживается вашей ОС и / или файловой системой.
  • Похоже, что в Windows вы не сможете использовать FileLock, если другое приложение открыло файл определенным образом.
  • Даже если вам удалось использовать FileLock или что-то еще, у вас все еще есть проблема, что что-то может войти и открыть файл между тестированием файла и выполнением переименования.

Более простое, хотя и непереносимое решение - просто попробовать переименование (или что-то еще, что вы пытаетесь сделать) и диагностировать возвращаемое значение и / или любые исключения Java, возникающие из-за открытых файлов.

Примечания:

  1. Если вы используете API Files вместо File API, вы получите дополнительную информацию в случае сбоя.

  2. В системах (например, Linux), где вам разрешено переименовывать заблокированный или открытый файл, вы не получите никаких ошибок или исключений. Операция будет успешной. Однако в таких системах вам обычно не нужно беспокоиться, если файл уже открыт, поскольку ОС не t блокировать файлы при открытии.

13
ответ дан 7 November 2019 в 11:55
поделиться

Я не думаю, что вы когда-нибудь получите окончательное решение для этого, операционная система не обязательно сообщит вам, открыт файл или нет.

Вы можете получить некоторую отдачу от java.nio.channels.FileLock , хотя документация javadoc загружена с оговорками.

1
ответ дан 7 November 2019 в 11:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: