2011-11-03 40 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

相關問題