2011-11-03 73 views
3

我已经编写了一个Java程序,将我们的服务器中的文件(* .dmp)格式复制到FTP服务器中。该程序工作正常,它将文件复制到ftp目录。使用java程序将数据复制到ftp时的文件大小差异

但唯一的问题是我复制到FTP后有一点文件大小差异。我的源文件大小是2.47 GB。当我比较MB中的文件大小时,在FTP服务器中,大小增加了16 MB。我做了两次,它表现出相同的行为。但是,当我手动复制到FTP目录(与我的Java程序),文件大小是确切的。

我在做任何错事。下面是我的java程序

package dev.test; 

import java.io.*; 
import java.io.IOException; 
import java.net.SocketException; 
import org.apache.commons.net.ftp.*; 
public class FTPTest { 

     public static void main(String a[]) throws SocketException, IOException 
     { 
     FTPClient f= new FTPClient(); 
    f.connect("10.100.8.74"); 
    boolean flag =f.login("dspetrofac\\admin","admin"); 
    System.out.println(" is connected ::"+flag); 

    // change working directory of FTP Server 

    boolean isDirectoryChanged =f.changeWorkingDirectory("IT/Documentum Team/"); 

    System.out.println(" Is the working directory Changed :: "+isDirectoryChanged); 



    // to copy from source to FTP 

    InputStream inputFile = new FileInputStream(new File("\\\\dmt500aaashjuae\\testDumpAutomation\\testSiteDump.dmp")); 
    boolean isSaved = f.storeFile("testSiteDump.dmp", inputFile); 
    System.out.println("is File Saved in FTP Server :: "+isSaved); 
    /* 
     String list[] =f.listNames(); 
    for(int i=0;i<list.length;i++) 
    { 
     System.out.println(" file no"+i+":: "+list[i]); 
    } 

    */ 

     } 
} 
+1

看看http://stackoverflow.com/questions/3145768/transfer-raw-binary-with-apache-commons-net-ftpclient – svaor

+0

@svaor它帮助了我。谢谢 – JavaGeek

回答

8

你需要调用setFileType(FTP.BINARY_FILE_TYPE) - 否则任何CR/LF/CR + LF被转换(由于FTP协议的ASCII模式作为使用的实现的默认设置),从而改变该文件内容/尺寸。

+3

就是这样。更多地使用二进制传输,大部分时间! – zeller

+0

@Yahia哇..工作。非常感谢。 – JavaGeek