|
|
|
Копирование файл в Java
|
|||
|---|---|---|---|
|
#18+
Здраствуйте! Есть папка, один программа(A) сажает файлы этому папку, другой программа (B(desktop java app)) копирует от этого папки файлы. Такой вопрос может ли (B(desktop java app)) программа копирует файлы которые программа (A) не до конца сажал в папку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2015, 16:50 |
|
||
|
Копирование файл в Java
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Теперь давайте тоже самое, только по-русски! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2015, 17:07 |
|
||
|
Копирование файл в Java
|
|||
|---|---|---|---|
|
#18+
Насколько я понял, вопрос в том, может ли десктопное приложение на Java копировать в третье место не до конца скопированные файлы из папки А в папку Б. Кратко: копировать файлы, которые еще не до конца скопированы из другого места. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2015, 20:15 |
|
||
|
Копирование файл в Java
|
|||
|---|---|---|---|
|
#18+
Есть подозрение, что все зависит от того, как именно написаны эти приложения. Причем как то смутно припоминается, что в самой Java нет достоверного способа узнать занят ли файл другим процессом (хотя может что то есть в Java 7/8) и для этого нужно дергать внешние утилиты из ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2015, 22:38 |
|
||
|
Копирование файл в Java
|
|||
|---|---|---|---|
|
#18+
Непонятно что нужно то - копировать незакончeнные файлы или нет? Подозреваю что копировать незаконченные не нужно. Если копировать только законченные, можете использовать локи и java.nio.channels.FileChannel (классика, с 1.4) В 7-8 Java все упростилось (появился java.nio.file.Files). Делая локи, учтите если папка расшаренная на NFS, то локи не работают во всех режимах (async/sync NFS). Когда-то делал похожее приложение, с буфером данных в папке, использовал Apache VFS библиотеку, все работало нормально - детектирование новых файлов в папке и тд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2015, 23:00 |
|
||
|
Копирование файл в Java
|
|||
|---|---|---|---|
|
#18+
Нужно делать что-то типа очереди сообщений. Первая программа скопировала файл - отметила о готовности, т.е. куда-то записала имя этого файла. Вторая программа периодически мониторит это (куда первая программа записала имя файла) на наличие нового файла, если появился - можно забрать новый файл, отметить что забрала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 09:13 |
|
||
|
Копирование файл в Java
|
|||
|---|---|---|---|
|
#18+
GarrickНужно делать что-то типа очереди сообщений. Первая программа скопировала файл - отметила о готовности, т.е. куда-то записала имя этого файла. Вторая программа периодически мониторит это (куда первая программа записала имя файла) на наличие нового файла, если появился - можно забрать новый файл, отметить что забрала. Зачем писать "куда-то" если можно по окончанию копирования создать рядом пустой файл *.ready? Простое и безотказное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 10:48 |
|
||
|
Копирование файл в Java
|
|||
|---|---|---|---|
|
#18+
fixxerGarrickНужно делать что-то типа очереди сообщений. Первая программа скопировала файл - отметила о готовности, т.е. куда-то записала имя этого файла. Вторая программа периодически мониторит это (куда первая программа записала имя файла) на наличие нового файла, если появился - можно забрать новый файл, отметить что забрала. Зачем писать "куда-то" если можно по окончанию копирования создать рядом пустой файл *.ready? Простое и безотказное решение. Так это и есть один из вариантов "куда-то" :) Только в данном случае придётся постоянно "шерстить" весь каталог на наличие таких файлов. Короче, вариантов много, суть одна - нужен некий семафор/сигнал/признак и т.п. окончания копирования файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 16:43 |
|
||
|
Копирование файл в Java
|
|||
|---|---|---|---|
|
#18+
GarrickКороче, вариантов много, суть одна - нужен некий семафор/сигнал/признак и т.п. окончания копирования файла. Вопрос на пару часов работы, велосипед незачем изобретать. Есть пара готовых вариантов для мониторинга изменений содержимого папок - в Java 7 это WatchService: https://docs.oracle.com/javase/tutorial/essential/io/notification.html - готовое демо приложение от Оракла. В Java 6 нормально работает Apache VFS - мониторинг подубовее, через сканированию по таймеру но код отлаженный. Далее - после процессинга файлов их можно удалять из директории либо хранить имена processed файлов (хоть в processed.txt в той же папке или /var папке приложения или в базе - найдете), чтобы повторно не обратывать те же файлы после перезапуска приложения. Проверка дешевая, обычный Set с именами файлов (путями). Пример с VFS: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 05:52 |
|
||
|
Копирование файл в Java
|
|||
|---|---|---|---|
|
#18+
uid unique, я почему не предлагаю конкретных вариантов - фиг его знает что там есть у @shms. Может уже JMS задействован или общая база данных для этих приложений есть, или ему по e-mail удобнее между приложения общаться :) и т.п. и т.д. Я же говорю "вариантов много" и мониторинг файловой системы один из возможных вариантов. Я ж не против... :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 10:49 |
|
||
|
Копирование файл в Java
|
|||
|---|---|---|---|
|
#18+
Garrickфиг его знает что там есть у @shms. Может уже JMS задействован или общая база данных для этих приложений есть, или ему по e-mail удобнее между приложения общаться :) и т.п. и т.д. Я же говорю "вариантов много" и мониторинг файловой системы один из возможных вариантов. Я ж не против... :-) Опс, про email/JMS не подумал, мы обычно лудим-паяем, примусы починяем. Но ведь во всяких MQSeries/OpenMQ/прочих JMS подобных с мониторингом то все в порядке, значит вопрос закрыт. VFS поодеживает практически все включая хадуп фс. Да и не спрашивают такие вопросы кто JMS использует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 17:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39117619&tid=2124612]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
143ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 453ms |

| 0 / 0 |
