Мне нужна небольшая помощь с компонентом JProgressBar
. Моя программа копирует файлы из одного места в другое, используя java.nio FileChannels
. Фактический метод копирования - transferFrom()
.
У меня сейчас два вопроса.
Как отслеживать ход передачи FileChannels? Все учебники, которые я нашел, используют обычные java.io InputStreams и увеличивают прогресс int во время циклического прохождения inputsream.
Мои методы копирования (методы FileChannel) инкапсулированы в отдельный метод, который вызывается другими методами, которые выполняют итерации по папкам источника и назначения, а затем вызывают методы FileChannel для каждого файла.
Как реализовать ProgressBar для полного механизма копирования?
Что ж, я должен был прочитать FAQ немного раньше, поэтому я думаю, что мне нужно отредактировать свой первоначальный пост, а не комментировать ответы, верно?
Хорошо, это то, что я сделал до сих пор.
Как и предполагал jambjo (спасибо, кстати), метод transferFrom()
теперь зациклен.
Кстати: есть ли предпочтительный размер чанка, или это зависит от степени детализации моего индикатора выполнения, как сказал EJP?
Вот мой фрагмент кода:
while (position < size) {
position += destination.transferFrom(source, position, chunkSize);
current = (position/size)*100;
System.out.println(current);
}
К сожалению, текущее значение остается в цикле 0, и я понятия не имею, почему.
Я что-то упустил?
Еще раз спасибо jambjo ! Я очень ценю ваш вклад!
Теперь, когда мониторинг выполнения одного файла работает, давайте рассмотрим мою вторую проблему.
Я бы хотел, нет, я должен следить за прогрессом не только одного файла, но и нескольких файлов.
Мои основные методы копирования перебирают различные каталоги и копируют соответствующие файлы, вызывая реальный метод передачи.
Таким образом, методы копирования не передают файлы, они просто выбирают файлы для фактического метода передачи.