开发者

FTP Get works on windows but not on linux

I am doing an FTP Get in Java with FTP Client which if I run on windows works fine but when I run the same on a linux box it get me the file with some modifications.

I have a test.tar.gz file (bunch of text files) which is of size 2872578 but it shows up as 2872541 when I run my java program on linux. Anyone faced a similar problem?

//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();
    } 
        }  开发者_Python百科
  } 


You need to tell the FTP server that you want to transfer in binary mode; if you don't, line endings will be converted to that of the native system, which you definitely don't want for a compressed file.

How you put the transfer in binary mode, I can't say - I can't see what class you're using - but assuming this is a pre-existing class, there is most likely a method for that purpose on the class doing the transfer (or, alternatively, an overload with a parameter specifying this).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜