Как знать, является ли файл, копирующий, 'в прогрессе / завершенный в Java (1.6) [дубликат]

Один из способов добиться этого - использовать Custom Tracker, который невидим. Например, вы можете определить свой трекер как.

    <oxy:PlotView.TrackerDefinitions>
        <oxy:TrackerDefinition TrackerKey="InvisibleTracker">
            <oxy:TrackerDefinition.TrackerTemplate>
                <ControlTemplate>
                    <TextBlock Text="{Binding}" Visibility="Collapsed"/>
                </ControlTemplate>
            </oxy:TrackerDefinition.TrackerTemplate>
        </oxy:TrackerDefinition>
    </oxy:PlotView.TrackerDefinitions>

Обратите внимание, что вы установили видимость TextBlock как Collapsed. Теперь вы можете установить TrackerKey для серии, для которой вам нужно скрыть Tracker на «InvisibleTracker». Это гарантирует, что трекер не виден для этих серий.

13
задан skaffman 2 March 2012 в 16:38
поделиться

4 ответа

Вы имеете в виду, что вы ожидаете, когда lastModified установит время? В лучшем случае это будет немного хитом.

Как насчет попытки открыть файл с правами записи (конечно, добавляя, а не обрезая файл)? Это не удастся, если другой процесс все еще пытается написать в него. Это немного некрасиво, особенно если учесть, что это может быть случай использования исключений для управления потоком (ick), но я думаю, что это сработает.

4
ответ дан 1 December 2019 в 22:58
поделиться

В прошлом я использовал два подхода, которые не зависят от платформы.

1 / Это было для передачи по FTP, где я контролировал то, что было помещено, так что это не может иметь непосредственного отношения.

По сути, независимо от того, что помещает файл file.txt , будет, когда он закончится, также поместить небольшой (возможно, нулевой байт) фиктивный файл с именем file.txt.marker (например).

Таким образом, инструмент мониторинга просто ищет файл маркера, который появляется, и, когда это происходит, он знает, настоящий файл готов. Затем он может обработать реальный файл и удалить маркер.

2 / Неизмененная длительность.

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

Например, если размер файла не изменился за 60 секунд, есть хороший шанс, что он закончен.

Существует баланс между не думанием о том, что файл закончен, просто потому, что на нем нет активности, и ожиданием, когда он закончится, прежде чем вы сможете начать его обработку. , Это меньше проблем для локального копирования, чем для FTP.

и подождите, пока он закончится, прежде чем вы сможете начать его обработку. Это меньше проблем для локального копирования, чем для FTP.

и подождите, пока он закончится, прежде чем вы сможете начать его обработку. Это меньше проблем для локального копирования, чем для FTP.

7
ответ дан 1 December 2019 в 22:58
поделиться

Если я правильно понял вопрос, вы ищете способ определить, завершено ли копирование файла или все еще в процессе?

Как насчет сравнения размера исходного и конечного файла (т.е. file.length ())? Если они равны, то копирование завершено. В противном случае, он все еще находится в процессе.

Я не уверен, что он эффективен, так как все равно потребует опроса. Но это может сработать.

1
ответ дан 1 December 2019 в 22:58
поделиться

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

http://www.missiondata.com/blog/java/28/file-upload-progress-with-ajax-and-java-and-prototype/

Загрузка файла с помощью Java (с индикатором выполнения)

1
ответ дан 1 December 2019 в 22:58
поделиться
Другие вопросы по тегам:

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