Знать, уже закончила ли папка копировать

Я выполняю приложение java, чтобы разжимать файлы посредством ftp. Я перемещаю папки, сжатые во введенную папку, которая, откуда берутся файлы, чтобы разжимать, и приложение работает все время. Проблема состоит в том, что он не определяет, если папка уже закончила скопированного или еще эта в процессе. Я нуждаюсь в классе, который он санкционировал бы сначала, если процесс скопированный уже закончился, и потом выполнял разжатого.

3
задан 21.09.2016, 20:15
5 ответов

Нет формы 100 % точная и безопасная, чтобы знать, уже было ли завершено перенесение, но я предлагаю тебе сделать вычисление связывая скорость передачи, против размера файла. Кроме того, ты можешь производить Checksum перед тем, как инициализировать перенесение, и это сравнивать с checksum перенесенного файла, оцененное время спустя процесса.

Здесь оставил эту ссылку StackOverflow на Английском языке, где ты можешь проверять интересное предложение, чтобы решать эту проблему

1
ответ дан 24.11.2019, 13:20

Вычисляя время скопированный или перенесение и помещая 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;
    }
1
ответ дан 24.11.2019, 13:20
  • 1
    объясни твой có я говорю –  26.10.2018, 03:54
  • 2
    нет, дай ему издавать в твой ответ и там añ ade это, что ты объясняешь мне –  26.10.2018, 03:59
  • 3
    Привет, если кто-то хочет сделать какой-то вклад в код paraq ue, функционируйте в ftp в unix или linux, он втречен с радостью. Привет – Gaston Barahona 12.11.2018, 23:55

Поскольку он упомянул @Ricardo J. Подстриженный в предыдущем ответе, ты не можешь делать успение на скорости передачи файлов, а следовательно использовать timeout и однажды закончило считать законченным перенесение - неправильно.

Правильное состояло бы в том, чтобы делать, по крайней мере, одну из этих двух вещей:

  1. Получать размер файла и тогда сравнивать с размером с "перенесенным" размером каждое X время, используя timer, или поскольку ты предпочел
  2. Вычислять checksum файла и проверять также каждое X время checksum файла в папке вывода.

В действительности 2. это тот, кто будет гарантировать тебя с 100 % сообразительности, что файл был перенесен и кроме того это сделал правильно. В средах с высокой ставкой ошибок, могло бы случаться, что у тебя есть файл с тем же размером, но испорчено.

0
ответ дан 24.11.2019, 13:20

Когда файл не увеличил Ваш tamaГ±a в течение x время, ты пытаешься разжимать. Если она descompresiГіn funcionГі весь OK. Если не, ты тестируешь 2x, 4x... время despuГ©s. DespuГ©s n попытки ты объявляешь неудавшийся файл и забываешь.

TambiГ©n ты можешь смотреть log ftp, процессов, у которых есть открытый файл и т.д.

-1
ответ дан 24.11.2019, 13:20

Я это решил реализовывая паузу в ней aplicaciГіn с Thread.sleep(x); в течение 3 минут, что гарантирует мне, что она descompresiГіn он осуществляется, завершает

-1
ответ дан 24.11.2019, 13:20