解决了
原来我误解了 available() 方法的实际作用,所以我只是更改了将数据写入此的代码:
int b = input.read();
while (b != -1) {
output.write(b);
b = input.read();
}
下次我会研究一种更有效的读/写方法,现在我很高兴我能用它。谢谢您的帮助!
原帖
我正在使用 Commons-Net 库通过 FTP 与服务器交互,当我尝试将文件从服务器下载到本地计算机时遇到了问题。我不知道这是否是 Comments-Net.FTPClient 中的错误,但很有可能我只是没有正确使用该库。也就是说,当我搜索问题时,我无法找到解决方案,并且我看到的示例代码似乎使用与我相同的方法来下载文件。
无论如何,实际的问题是一些下载的文件是完全空的,当它们应该包含数据时。它是随机发生的,所以每次我下载所有文件时,不同的文件最终都是空的。我假设我从服务器读取数据或将其写入文件的方式存在问题。
这是代码:
// For each file
InputStream input = ftp.retrieveFileStream(sourcePath);
ftp.completePendingCommand();
OutputStream output = new FileOutputStream(new File(destinationPath));
while (input.available() > 0) {
output.write(input.read());
}
input.close();
output.close();
我对网络很陌生,所以我只是很傻并且做一些非常简单的错误吗?