我想问问是否有人知道FTP存在Java 7问题吗?我已经使用了Sun Net和Apache Commons Net库,并且都在Java
6上达到了预期的效果。但是,当我将开发环境(Eclipse)切换到1.7时,相同的操作的执行速度非常慢(大约4.5至8KB /
s),这些是本地主机服务器和局域网内的另一台服务器。
我尝试了缓冲流,字节到字节的传输,关闭Nagle算法,并使用了Apache便捷方法storeFile(),后者最终在加速localhost上表现出色,但再次降低了对远程服务器的爬网速度。我还设置了所有计算机以关闭状态FTP过滤。
InputStream is = null;
OutputStream os = null;
try {
is = new BufferedInputStream(prepareInputStream(data));
os = new BufferedOutputStream(prepareOutputStream(data));
if (is == null || os == null) {
log.error("Can't build connection");
return;
}
byte[] buf = new byte[4096];
int c = 1;
while (c > 0) {
c = is.read(buf);
if (c > 0)
os.write(buf, 0, c);
data.incrCurrentPosition();
fireStateChanged(data);
}
data.incrCurrentPosition();
} catch (IOException e) {
log.error(e.getMessage(), e);
setEnabled(false);
} catch (Exception e) {
log.error(e.getMessage(), e);
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
可以看出,这是相当标准的实现代码。同样,在Java 6中,事情很快就解决了。在Java 7中,对于Sun和Apache
Commons库,它的速度降低了10到20倍。使用FileZilla这样的FTP客户端可以确认FTP正常运行,因此我认为它确实与Java
7有关。我会尽一切可能在网上挖到任何有关问题的信息,但是,大多数情况下,我所看到的都是关于Java 7和Windows 7防火墙冲突。
在此先感谢您提供任何见解。
请检查您当前的缓冲区大小是多少:
ftpClient.getBufferSize();
如果尚未将其设置为其他值,则该值为零(0)。因此,将其设置为更高的值:
ftpClient.setBufferSize(1048576);//1024*1024
您可以像以前一样检查其当前值:
ftpClient.getBufferSize();
顺便说一下,接受的答案 setBufferSize(0) 对我不起作用。我使用的是Apache
Commons的最新版本,因此该解决方案可能适用于早期版本。如果将缓冲区大小设置为零,则当前版本将保持不变。
我想将文件从一台服务器上传到另一台FTP服务器,以下是我的上传文件代码,但它抛出错误为: 远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)。 这是我的代码: 你能告诉我哪里出了问题吗?
问题内容: 设置INTERNET_ACCESS等后,出现此错误。 这是我测试过的代码的另一部分,仍然收到该异常 } 问题答案: “ftp.194.90.81.149”: No address associated with hostname 您收到UnknownHostException的事实意味着ftp.194.90.81.149在DNS中不是真实的主机名。我怀疑其中的数字部分是您真正想要的。即
问题内容: 我知道在该主题上也有类似的帖子,但是它们并没有完全解决我的问题。当您这样做时: (显然)大多数时间都会打印,因为以某种方式缓存了[-128,127]范围内的整数。但: 会回来的。我知道我正在请求一个Integer的新实例,但是由于装箱的原语在Java中是不可变的,并且已经有了执行“正确的事情”的机制(如第一种情况所示),为什么会发生这种情况? 如果Integer的所有实例(具有10)都
问题内容: 是因为我们应该加载类(例如),创建实例,然后搜索适当的方法,打包参数,然后仅调用方法?因此,大多数时间都花在了这些操作上,而不是花在对象上的显式方法调用上,对吧? 问题答案: 使用反射时,每次执行时都需要验证您执行的每个步骤。例如,当您调用一个方法时,它需要检查目标是否实际上是该方法的声明者的实例,是否具有正确数量的参数,每个参数是否具有正确的类型,等等。 绝对没有内联或其他性能技巧的
本文向大家介绍Python ftp上传文件,包括了Python ftp上传文件的使用技巧和注意事项,需要的朋友参考一下 以下代码比较简单,对python实现ftp上传文件相关知识感兴趣的朋友可以参考下 下面给大家介绍python实现ftp上传下载文件的方法 python本身自带一个FTP模块,可以实现上传下载的函数功能。
将照片批量上传ftp服务器。 [Code4App.com]