gpt4 book ai didi

Java FTPClient 不传输整个文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:02 27 4
gpt4 key购买 nike

我写了一个从 FTP 服务器下载文件的 java 类。一切看起来都很好,但是当我检查文件大小时,它们比原始文件小一点。

知道为什么会这样吗?

import java.io.FileOutputStream;
import java.io.BufferedOutputStream;
import java.io.OutputStream;
import java.io.IOException;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

import java.io.IOException;

public class Downloader {
public static void main(String[] args) {
String server = "ftp.example.gov";
int port = 21;
String user = "anonymous";
String pass = "anonymous";
FTPClient ftpClient = new FTPClient();

try {
ftpClient.connect(server, port);
ftpClient.login(user, pass);
ftpClient.cwd("dir1/dir2/gz");

FTPFile[] files = ftpClient.listFiles();

for (FTPFile file : files) {
String downloadFile = "/home/andrej/Documents/" + file.getName();
OutputStream output = new BufferedOutputStream(new FileOutputStream(downloadFile));
boolean success = ftpClient.retrieveFile(file.getName(), output);
output.close();
if (success) {
System.out.println(file.getName());
}
}

} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
e.printStackTrace();
} finally {
try {
if (ftpClient.isConnected()) {
ftpClient.logout();
ftpClient.disconnect();
}
} catch (IOException e) {
e.printStackTrace();
}

}
}
}

最佳答案

尝试以Binary模式下载,你的区别可能是两台服务器回车不同造成的。如果您的服务器是 Windows,您将有 CRLF,而 Linux 将只有换行符。 ASCII 模式的 FTP 会自动为您进行转换。

当您比较两个文件时,它们在文本方面是否相同?如果是这样,我认为您不必担心。

关于Java FTPClient 不传输整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31462544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com