Нужен ли временный файл при получении файлов по ftp? - PullRequest
0 голосов
/ 05 апреля 2019

Я использую ftpClient.retrieveFile() для загрузки файлов с FTP-сервера, в то время как другой поток постоянно сканирует каталог на наличие файлов для обработки.Мне интересно, если это опасно?Может ли быть так, что файл не закончил загрузку и обрабатывается другим потоком?Следует ли использовать суффикс .temp для сохранения временного файла и переименования его после завершения транзакции?

1 Ответ

0 голосов
/ 05 апреля 2019

Файлы, как правило, видны другим процессам или потокам, как только вы их создаете. Таким образом, ваш второй поток может увидеть и обработать файл, прежде чем вы завершите запись в него. Правильная практика - использовать временное расширение (например, упомянутый вами .temp) или временный каталог.

В вашем случае наиболее подходящим вариантом было бы использование некоторого механизма синхронизации, чтобы второй поток блокировался, когда нет файлов для обработки, и первый поток уведомлял второго, когда файл заканчивает загрузку. Java поддерживает эти операции с помощью методов wait() и notify() класса Object.

...