|
|
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
проблема без ответа http://www.cyberforum.ru/java-j2se/thread1215925.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2017, 13:02 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
maytonНам по хорошему нужно реагировать на закрытие (CLOSE) файла после копирования. Я ищу в спеках WatchService но ничего не нахожу. Потому что нет его: https://msdn.microsoft.com/en-us/library/windows/desktop/aa364391(v=vs.85).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2017, 13:51 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
mayton, да кстати я забыл выложит нужные файлы тоже чтоб вы посморели итоговый файл... кстати все таки уважаемый Dimitry Sibiryakov говорил на счет копирования... а на счет canRead и canWrite можно их убрать все равно такая ситуация будет, там только изза do while программа не падает а так падал бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2017, 13:56 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
Музаффарприкол в том что иногда я получаю эксепшн иногда все гладко идет...А что за приложение, которое создает/копирует файлы в эту папку? Вами разработана? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2017, 22:53 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
Раскомментарил типы событий. Понаблюдал за событиями от вотчера. Если мы копируем файл ненулевой длины то получаем: 1) Одно событие ENTRY_CREATE 2) Пакет событий ENTRY_MODIFY Вобщем-то мой поинт в том что нужно завести какую-то служебную структуру тира Map<File,State> и фиксировать статус файла. На каждое событие обновлять статус. И если детектирован факт перехода с ENTRY_MODIFY файла X на ENTRY_CREATE файла Y то мы (условно) считаем что файл Х завершил свою дозапись (append). Мой поинт основан на предположении что файловые блокировки дороже стоят и нам лучше их использовать по минимуму. Еще один поинт. В силу сложности организации самого процесса вотчинга (сопряжение с файловой системой) и много шумящих событий мы никогда не добъемся отсуствия IOExceptions. Они всегда будут. Но мы сможем снизить их вероятность. И последний поинт. Это уже относится к процессу который создает html файлы. Его можно сделать так чтобы он создавал файлы с расширением *.$$$ а после финализации переименовывал в html. Этот хинт часто используют в Linux для достижения определенной атомарности файловых событий и для защиты от случайного захвата скриптом недописанного архива (к примеру). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2017, 23:40 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
Вот жеж люди ... Умный человек уже сказал что делать: создать, заполнить, закрыть, переименовать (переместить). Но, блин, мы вы создадим кучу костылей, но не будем делать правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 06:12 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВот жеж люди ... Умный человек уже сказал что делать: создать, заполнить, закрыть, переименовать (переместить). Но, блин, мы вы создадим кучу костылей, но не будем делать правильно. ты почитай внимательно, прежде чем высказываться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 06:53 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
UsmanА что за приложение, которое создает/копирует файлы в эту папку? Вами разработана? это левая даже можно сказать основная корпоративная система из далеких 70-80х... mayton, это все ради того что Вы опасаетесь, что процесс (ОС) может не давать разрешение и я не выхожу из цикла? но если счетчик то: с одной стороны тоже можно, но мы может и никогда не получим нужную инфу а это совсем не есть хорошо мне кажется, т.е. это будет последней точкой для проекта, т.к. не годный... думаю тоже не айс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 07:38 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
maytonИ последний поинт. Это уже относится к процессу который создает html файлы. Его можно сделать так чтобы он создавал файлы с расширением *.$$$ а после финализации переименовывал в html. Этот хинт часто используют в Linux для достижения определенной атомарности файловых событий и для защиты от случайного захвата скриптом недописанного архива (к примеру). кстати это тестовый модуль и в конечном продукте я не создам файл хтмл или ещё что то, после парсинга адресату вышлю/покажу ответ в табличном виде... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 07:43 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
maytonесли детектирован факт перехода с ENTRY_MODIFY файла X на ENTRY_CREATE файла Y то мы (условно) считаем что файл Х завершил свою дозапись (append). А потом в каталог приходят два писателя и мы опять удивляемся почему у нас в файле только половина содержимого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:45 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
из сказанных сделал пока так... Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 15:49 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
Музаффарэто левая даже можно сказать основная корпоративная система из далеких 70-80х...будет круто, если получится подрубиться прямо к базе той системы... такое ощущение, что это просто экспорт табличных данных в файл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 16:22 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
Usmanбудет круто, если получится подрубиться прямо к базе той системы... такое ощущение, что это просто экспорт табличных данных в файл Да было бы круто но вот система вообще не использует субд, прямого доступа к систему не имеется и работаю через так называемый концентратор... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 21:56 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
что то все замолчали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2017, 07:56 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
Музаффарчто то все замолчали... Решение через Thread.sleep() плохо тем что оно кушает потоки. Если вы используете пул в 10 потоков для обработки входящих файлов, то 10 файлов достаточно чтобы ваш пул усыпить на довольно продолжительное время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2017, 08:23 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
Музафар мне щас некогда я убегаю. Несколько поинтов: 1) Мы обрабатываем события файловой системы медленнее чем они поступают. Это не есть гуд т.к. будут потери событий (там есть спец константа для этого) либо (возможно) будет другая ситуация. Тебе и участникам топика надо выкурить док по Watcher полностью. 2) Я-бы предложил обрабатывать события в Executor. Но перед этим события должны пройти некую умную фильтрацию о которой я писал выше. Тоесть убрать "дребезг" или многократное срабатывание ENTRY_MODIFY. Вечером продолжим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2017, 08:51 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
BlazkowiczРешение через Thread.sleep() плохо тем что оно кушает потоки. Если вы используете пул в 10 потоков для обработки входящих файлов, то 10 файлов достаточно чтобы ваш пул усыпить на довольно продолжительное время. а TimeUnit.SECONDS.sleep(); ? или это тоже самое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2017, 10:25 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
Музаффара TimeUnit.SECONDS.sleep(); ? или это тоже самое? Код: java 1. 2. 3. 4. 5. 6. 7. 8. Таким нехитрым способом вы не усыпляете потоки почем зря. А в случае ошибки закидываете задачу в очередь, а поток может заняться обработкой других файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2017, 10:31 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, спасибо за советы, кстати после анализа я так понял что мне достаточно секунда задержки чтоб система разлочил копируемый файл... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2017, 11:19 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
BlazkowiczТаким нехитрым способом вы не усыпляете потоки почем зря. А в случае ошибки закидываете задачу в очередь, а поток может заняться обработкой других файлов. Я бы даже вообще все файлы сначала в executor пулял, чтобы дать время завершить запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2017, 11:21 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
А потом в каталог приходят два писателя и мы опять удивляемся почему у нас в файле только половина содержимого. Замечание ценное. И справедливое. Выше я уже упоминал что на интерфейсе Watcher мы не сможем 100% точно отработать событие ::close() и нам придется делать несколько "пристрелочных" выстрелов по файлу с целью поймать состояние когда он уже финализирован. Еще. До того как начнет работать HtmlParser я-бы предложил в целях оптимизации прогнать валидатор. Это новая алгоритмическая сущность которую нужно создать. Валидация будет проходить по критериям - размер файла (мы не будем брать в обработку файлы меньше 2Кб к примеру) - простейшая проверка на консистентность (для html-файла к примеру это наличие финализирующего тега </html>) Если файл не проходит валидацию то мы откладываем его парсинг на некоторое время. Предполагается что внешний процесс еще пишет этот файл. Еще. Блажкович предложил делать таймаут перед повторной обработкой файла с ScheduledExecutedService. Я-бы предложил ввести опцию "растущего таймаута" по экспоненте. Данная опция позволит не "долбить" по очень длинным и часто изменяющимся файлам (два процесса сливают два лога) а просто отодвинуть их обработку на потом в связи с неудачами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2017, 21:38 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
mayton, мне кажется что Вы взялись на проблему очень глобально... это конечно радует но и пугает... авторнам придется делать несколько "пристрелочных" выстрелов по файлу с целью поймать состояние когда он уже финализирован да и получить эксепшен если файл не разлочан, так? ну дальше обработать этот эксепшн авторДо того как начнет работать HtmlParser я-бы предложил в целях оптимизации прогнать валидатор. Это новая алгоритмическая сущность которую нужно создать. Валидация будет проходить по критериям - размер файла (мы не будем брать в обработку файлы меньше 2Кб к примеру) - простейшая проверка на консистентность (для html-файла к примеру это наличие финализирующего тега </html>) придется брать файлов меньше 2КБ :) и файлы не более чем 1МБ (если я не ошибаюсь) второго я не совсем понял при чем тут хтмл файл? авторЕсли файл не проходит валидацию то мы откладываем его парсинг на некоторое время. Предполагается что внешний процесс еще пишет этот файл. и не легче ли просто ждать скажем 1секунд перед началом парсинга и после появлении файла как предлагал Блазкович? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2017, 07:08 |
|
||
|
доступ к файлу
|
|||
|---|---|---|---|
|
#18+
А как вы переименуете если файл залочен? Мне кажется не средства узнать о разлочке кроме долбления с райзе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2017, 07:55 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39487105&tid=2122763]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
72ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
| others: | 224ms |
| total: | 432ms |

| 0 / 0 |
