当前位置: 首页 > 知识库问答 >
问题:

Apache Commons Net慢速FTP上传

赵渊
2023-03-14

我正在使用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

通过setBufferSizeFTPClient缓冲区大小也设置为16kB

问题不在于服务器或我的互联网连接,因为使用Filezilla作为FTP客户端,上传速度要合理得多。

这个问题似乎也发生在Java6和7联合虚拟机上。

有人知道为什么会发生这种情况吗?共享网络或Java有问题吗?或者有什么我没有正确配置的地方?

共有1个答案

穆飞龙
2023-03-14

同样的问题-使用SDK 1.6解决问题,但也尝试找到更好的方法

UPD:已解决(见评论)

 类似资料:
  • 我有一个关于C#的ftp库的问题。我需要从ftp服务器下载9000个txt文件。火车站ToUpper()是文件名,因此对于每个文件,我都需要一个新的ftp连接。对于一个文件,大约需要一秒钟。txt文件包含两行。因此,对于所有文件,大约需要一个半小时。是否有更好/更快的解决方案?

  • 问题内容: 我想问问是否有人知道FTP存在Java 7问题吗?我已经使用了Sun Net和Apache Commons Net库,并且都在Java 6上达到了预期的效果。但是,当我将开发环境(Eclipse)切换到1.7时,相同的操作的执行速度非常慢(大约4.5至8KB / s),这些是本地主机服务器和局域网内的另一台服务器。 我尝试了缓冲流,字节到字节的传输,关闭Nagle算法,并使用了Apac

  • 我正在试用Flutter,我的应用程序在仿真器和实际设备上的响应都非常非常慢。我收到这样的警告 跳过了51帧!应用程序可能在其主线程上做了太多的工作。 我知道Dart是一种单线程编程语言,在Android中,我曾使用用于异步的好的旧块来解决这一问题。我试图在Flutter中应用相同的方法,并且我阅读了和排序,但是当您从Internet读取数据时,这些示例似乎是针对这些示例的。我的应用程序在这个阶段

  • 针对Postgres数据库的某个索引SELECT查询所花费的时间非常可变--从50毫秒到多秒,有时甚至是几分钟,即使在最轻的负载下也是如此。 你能为26秒的差距提出一个解释吗? 关于并发的注意事项:即使只有一个请求也有很大的可变性:端到端50-300毫秒,但是当一个用户提交一批大约100个这样的查找时(可能有10-20个同时运行),很可能有几个查找需要5-10秒。然而C3P0的统计数据从来没有比:

  • 问题内容: 我有以下InnoDB表: 使用这些键: 我只是注意到有时我在此表上有一个INSERT查询,耗时超过1秒 我真的很困惑,为什么要花这么长时间。我如何加快速度? 顺便说一句:这样每天大约有80个缓慢的插入和40个缓慢的更新。 问题答案: 有时,不是查询本身会导致速度降低- 在表上运行的另一个查询可能会由于事务隔离和锁定而很容易导致插入速度降低。您的慢查询可能只是在等待其他事务完成。这在繁忙