Я выполняю приложение java, чтобы разжимать файлы посредством ftp. Я перемещаю папки, сжатые во введенную папку, которая, откуда берутся файлы, чтобы разжимать, и приложение работает все время. Проблема состоит в том, что он не определяет, если папка уже закончила скопированного или еще эта в процессе. Я нуждаюсь в классе, который он санкционировал бы сначала, если процесс скопированный уже закончился, и потом выполнял разжатого.
Нет формы 100 % точная и безопасная, чтобы знать, уже было ли завершено перенесение, но я предлагаю тебе сделать вычисление связывая скорость передачи, против размера файла. Кроме того, ты можешь производить Checksum перед тем, как инициализировать перенесение, и это сравнивать с checksum перенесенного файла, оцененное время спустя процесса.
Вычисляя время скопированный или перенесение и помещая sleep привет!
Вычислил время trasnferencia или скопировано файла, чтобы потом определять как долго, я должен ждать, чтобы мочь делать следующее действие, пример двигать, меняться bnombre, разжимать в случае этого вопроса. †“Гастон Барахона 34 секунды назад издавать
long TiempoEspera = valTiempo("miarchivo.txt");
System.out.println("Archivo: " + "miarchivo.txt"+ " Tiempo de transferencia: " + TiempoEspera + " Segundos");
Thread.sleep(1000 * TiempoEspera );
System.out.println("Archivo copiado: c:/miarchivo.txt");
private static long valTiempo(String filepath) throws InterruptedException {
File fichero = new File(filepath);
long pesoActual = fichero.length();
//peso en kb
long pesoKB = pesoActual / 1024;
// mega
long pesoMB = pesoKB / 1024;
//Calculo de tiempo FACTOR_OSI_RED es la ocilacion de la red
long tasaTransferencia=20;
double FACTOR_OSI_RED =1.1;
long tiempo = Math.round((pesoMB / tasaTransferencia ) * FACTOR_OSI_RED);
return tiempo;
}
Поскольку он упомянул @Ricardo J. Подстриженный в предыдущем ответе, ты не можешь делать успение на скорости передачи файлов, а следовательно использовать timeout и однажды закончило считать законченным перенесение - неправильно.
Правильное состояло бы в том, чтобы делать, по крайней мере, одну из этих двух вещей:
В действительности 2. это тот, кто будет гарантировать тебя с 100 % сообразительности, что файл был перенесен и кроме того это сделал правильно. В средах с высокой ставкой ошибок, могло бы случаться, что у тебя есть файл с тем же размером, но испорчено.
Когда файл не увеличил Ваш tamaГ±a в течение x время, ты пытаешься разжимать. Если она descompresiГіn funcionГі весь OK. Если не, ты тестируешь 2x, 4x... время despuГ©s. DespuГ©s n попытки ты объявляешь неудавшийся файл и забываешь.
TambiГ©n ты можешь смотреть log ftp, процессов, у которых есть открытый файл и т.д.
Я это решил реализовывая паузу в ней aplicaciГіn с Thread.sleep(x);
в течение 3 минут, что гарантирует мне, что она descompresiГіn он осуществляется, завершает