你有FTPClient就比较好办,假如你的两台FTP服务器分别为fs1和fs2
在本地开发代码思路如下:
通过FTPClient连接上fs1,然后下载(可以循环批量下载)到本地服务器,保存到一个临时目录。
下载完成后,FTPClient断开与fs1的连接,记得必须logout。
本地服务器通过FileInputStream将刚下载到临时目录的文件读进来,得到一个List<File>集合。
通过FTPClient连接上fs2,循环List<File>集合,将文件上传至fs2的特定目录,然后清空临时目录,上传完毕后,断开fs2的连接,同样必须logout。
。。。 你方法错了。 建议你先看看 ftp 的协议。 我简单的说下 ftp 协议。ftp 在客户端连接上之后 ,客户端 执行get 命令 服务端返回服务端口号,客户端收到端口号 并根据端口号创建连接, 连接建立成功后 服务端 直接读取本地文件 通过数据流的方式边读边将数据 输出到 tcp 流,然后客户端就是边读数据流边写入到本地。服务端将文件读取完成之后 就close 数据流,客户端就可以 捕获到一个数据流关闭的异常,
再说 你的 问题。 socket is closed 就是 说tcp 已经关闭了。 你还说 你使用了 shutdownoutput。。。。 这不是说 socket 停止的么? 停止了 还没关闭? 已经被你的代码关闭了。!
文件名问题没遇到过。文件大小的遇到过。。
我遇到的是下载小图片压缩包,压缩包小于 64k 时正常,大于64K 后只能解压出一部分约64K左右的数据。
后来发现是使用FTPClient 的时候配置参数中 WINDOWS 和LINUX 的问题。
你可以去尝试一下,从这个方面着手。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)