【发布时间】:2018-01-29 13:58:38
【问题描述】:
我需要用 Java 从 FTP 服务器下载 .png 文件。 我有 3 台不同的服务器,每台都包含一个包含完全相同的 .png 文件的文件夹。
在服务器 1 上:
如果我使用 FTPClient (apache.commons.net.ftp) 下载存储在此服务器上的 4686 字节的 .png 文件,我会得到一个 4706 字节的 .png 文件,但我无法打开它。
如果我用 Total Commander 下载它,我会得到一个 4686 字节的 .png 文件,我可以打开它。
在服务器 2 和 3 上:
使用FTPClient 和 Total Commander,我在这两种情况下都得到了一个 4686 字节的文件,我可以毫无问题地打开它。
我的代码:
FTPClient ftpClient = new FTPClient();
ftpClient.connect("...", PORT);
ftpClient.login("...", "...");
ftpClient.enterLocalPassiveMode();
FTPFile[] imageFiles = ftpClient.listFiles(distantPathForImages);
for (FTPFile imageFile : imageFiles) {
InputStream inputStream = ftpClient.retrieveFileStream(distantPathForImages + imageFile.getName());
OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(new File(PATHDESTCSS + imageFile.getName())));
byte[] bytesArray = new byte[65536];
int bytesRead;
while ((bytesRead = inputStream.read(bytesArray)) != -1) {
outputStream.write(bytesArray, 0, bytesRead);
}
outputStream.close();
inputStream.close();
ftpClient.completePendingCommand();
}
为什么我的文件只有从服务器 1 下载时才有这些“额外字节”,我该如何解决?
【问题讨论】:
标签: java ftp apache-commons-net