FTP Get работает на Windows, но не на Linux - PullRequest
0 голосов
/ 11 октября 2010

Я делаю FTP Get in Java с FTP-клиентом, который, если я запускаю на Windows, работает нормально, но когда я запускаю то же самое на компьютере с Linux, он получает мне файл с некоторыми изменениями.

У меня естьФайл test.tar.gz (набор текстовых файлов) размером 2872578, но он отображается как 2872541, когда я запускаю свою Java-программу в Linux.Кто-нибудь сталкивался с подобной проблемой?

//write files to local FS

  OutputStream output = null;
  for(int i = 0; i < files.length; i++)
  {
   if(files[i].getName().compareTo(file) == 0 || files[i].getName().compareTo("*") ==0)
   if(!files[i].getName().startsWith(".") && files[i].getType() != 1)
        {
    try {
     if(targetdir != null)
     output = new FileOutputStream(new File(targetdir + files[i].getName()));
     else
      output = new FileOutputStream(new File(files[i].getName()));
     System.out.println("Creating: " + files[i].getName());
     client.retrieveFile(files[i].getName(), output);
    } catch (FileNotFoundException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } 
        }  
  } 

1 Ответ

2 голосов
/ 11 октября 2010

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

Как вы переводите передачу в двоичном режиме, я не могу сказать,- Я не вижу, какой класс вы используете, - но если предположить, что это уже существующий класс, то, скорее всего, для этого класса есть метод, выполняющий передачу (или, альтернативно, перегрузку с параметром, определяющим этот класс).).

...