我正在使用FTP客户端进行FTP Get in Java,如果我在Windows上运行工作正常,但是当我在linux机器上运行时,它会给我一些修改后的文件。
我有一个test.tar.gz文件(一堆文本文件),大小为2872578但是当我在linux上运行我的java程序时它显示为2872541。有人遇到过类似的问题吗?
//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();
}
}
}
答案 0 :(得分:2)
您需要告诉FTP服务器您要以二进制模式传输;如果不这样做,行结尾将转换为本机系统的行结尾,您绝对不希望它用于压缩文件。
你如何将传输置于二进制模式,我不能说 - 我看不到你正在使用什么类 - 但假设这是一个预先存在的类,很可能有一个方法用于此目的执行传输的类(或者,使用指定此参数的重载)。