我编写了一个java程序,将文件(* .dmp)格式从我们的服务器复制到FTP服务器。该程序运行正常,它将文件复制到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]);
}
*/
}
}
答案 0 :(得分:9)
您需要调用setFileType( FTP.BINARY_FILE_TYPE)
- 否则任何CR / LF / CR + LF都会被翻译(由于FTP协议中的ASCII模式是所使用实现的默认模式),因此会更改文件内容/大小。< / p>