![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
xbarmaglot |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
Отслеживаю изменение файловой системы.
Если точно, то появление новых файлов в папке с помощью FileAlterationMonitor. Если появился новый файл, то копирую его в определенное место. Так вот, если файл очень большой, то событие на его появление приходит раньше, чем он скопируется в эту папку. В результате, при попытке его скопировать в новое место происходит исключение. Можно ли как настроить FileAlterationMonitor, чтоб событие приходило, когда файл полностью скопируется. Или каким-либо способом дождаться самому полного копирования ? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
На уровне ОС нет такого понятия - "файл полностью скопировался".
1. файл создается - атомарная операция 2. файл открывается на запись - атомарная операция, из внешних проявлений разве что блокировки файла 3. в файл пишутся данные - не атомарная операция, когда изменения станут видны сторонним процессам трудно предсказать 4. файл закрывается - записанные данные становятся полностью видимы всем Если файл маленький то просто фазы 1-4 успевают выполнится до того как твой код выполнится, если большой - нет. Какого-то общего решения - нет. Ты контролируешь код который пишет файлы в папку? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
xbarmaglot |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
||||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Тогда остается только мониторить изменения файла, если файл не менялся Х секунд, считать что все.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
a0730 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Можно отслеживать изменения файла и через некоторое время (пара секунд) пытаться открыть файл на запись.
Как-то так: File file = new File("путь к файлу"); FileChannel channel = new RandomAccessFile(file, "rw").getChannel(); Если получишь исключение, то ждать еще. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |