Java FTP Get可以在windows上工作,但不能在linux上工作
我正在使用FTP客户端在Java中进行FTP获取,如果我在windows上运行该客户端,效果会很好,但是当我在linux上运行相同的客户端时,它会通过一些修改来获取文件 我有一个test.tar.gz文件(一堆文本文件),大小为2872578,但在linux上运行java程序时显示为2872541。有人面临过类似的问题吗Java FTP Get可以在windows上工作,但不能在linux上工作,java,windows,linux,ftp,client,Java,Windows,Linux,Ftp,Client,我正在使用FTP客户端在Java中进行FTP获取,如果我在windows上运行该客户端,效果会很好,但是当我在linux上运行相同的客户端时,它会通过一些修改来获取文件 我有一个test.tar.gz文件(一堆文本文件),大小为2872578,但在linux上运行java程序时显示为2872541。有人面临过类似的问题吗 //write files to local FS OutputStream output = null; for(int i = 0; i < files.l
//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();
}
}
}
//将文件写入本地FS
OutputStream输出=null;
对于(int i=0;i
您需要告诉FTP服务器您要以二进制模式传输;如果不这样做,行尾将转换为本机系统的行尾,而压缩文件肯定不需要这样做
如何将传输置于二进制模式,我不能说-我看不出您使用的是什么类-但假设这是一个预先存在的类,则在执行传输的类上很可能有一个用于此目的的方法(或者,一个带有指定此参数的重载).只要浏览一下“FTP windows linux文件大小”,我就会问:您是以ASCII还是二进制模式传输?它应该是二进制的。谢谢你们的回复Michael和spender,在二进制模式下传输工作正常!如果有人遇到类似的问题,我将使用ApacheCommons库中的FTP客户机类,可以使用:FTPClient Client=new FTPClient();client.setFileType(FTP.BINARY\u文件类型);