我正在使用 Apache Commons Net 3.3 来处理 Java 应用程序中的 FTP 传输。
下载似乎工作正常,但我的速度比本地互联网连接上传速度慢得多。
将文件数据写入流的代码如下所示:
BufferedOutputStream out = new BufferedOutputStream(ftp.getOutputStream(prt));
BufferedInputStream in = new BufferedInputStream(prov.getInputStream(s));
byte[] buff = new byte[BUFF_SIZE];
int len;
while ((len = in.read(buff)) >= 0 && !prog.isCanceled()) {
out.write(buff, 0, len);
total += len;
prog.setProgress((int) (Math.round((total / combo) * 100)));
}
in.close();
out.close();
BUFF_SIZE = 16kB
我通过以下方式将 FTPClient 缓冲区大小也设置为 16kBsetBufferSize
问题不在于服务器或我的互联网连接,因为使用 Filezilla 作为 FTP 客户端以更合理的速度进行上传。
Java 6 和 7 JVM 似乎也会出现此问题。
有没有人知道为什么会这样?Commons Net 或 Java 有问题吗?还是我没有正确配置什么?