FTP在Windows上工作但不在Linux上工作

时间:2010-10-11 07:58:56

标签: java windows linux ftp client

我正在使用FTP客户端进行FTP Get in Java,如果我在Windows上运行工作正常,但是当我在linux机器上运行时,它会给我一些修改后的文件。

我有一个test.tar.gz文件(一堆文本文件),大小为2872578但是当我在linux上运行我的java程序时它显示为2872541。有人遇到过类似的问题吗?

//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 个答案:

答案 0 :(得分:2)

您需要告诉FTP服务器您要以二进制模式传输;如果不这样做,行结尾将转换为本机系统的行结尾,您绝对不希望它用于压缩文件。

你如何将传输置于二进制模式,我不能说 - 我看不到你正在使用什么类 - 但假设这是一个预先存在的类,很可能有一个方法用于此目的执行传输的类(或者,使用指定此参数的重载)。