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