请教一个在java中使用FTPClient的问题

问题:现有A、B、C三台服务器,其中A 和 C 不能通信,B和A 、C都能通信,现在需要把A服务器上的文件给拷贝到C服务器上,我不想使用把A的文件先下载到B,再从B上传到C的方法,因为这里面会占用B的空间,还要写一个定时清理的程序,能不能使用FTPClient直接建立一条流,把A的文件给上传到C上面去,请各位大大帮忙解答,谢谢。

flag = ftpClient.retrieveFile(remoteFileName, os); os为远程文件的outputStream |remoteFileName为A服务器上文件名
flag = ftpClient.storeFile(remoteFileName, is);is为远程文件的inputSteam |remoteFileName为C服务器上文件名
由此可见这个地方还是相当纠结的,必须要用B服务器做个中转,利用B服务器上文件的OutputStream 和InputStream 所以如果文件不大的话当文件经B上传到C服务器后立即把B红的临时文件删掉就好了

当然你也可以试试
storeFileStream(String remote);来获得C上文件的OutputStream 在利用 ftpClient.retrieveFile(remoteFileName, os);来上传,但是这种方法我没试过,你可以尝试一下,如果成功了请告诉我结果,谢谢
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-08
lag = ftpClient.retrieveFile(remoteFileName, os); os为远程文件的outputStream |remoteFileName为A服务器上文件名
flag = ftpClient.storeFile(remoteFileName, is);is为远程文件的inputSteam |remoteFileName为C服务器

03-Java框架FTPClient 使用rename()移动文件和文件重命名
最初,我们试图直接使用FTPClient API中的move方法,但未能找到合适的解决方案。随后,我们考虑了一个替代策略,即先复制文件到目标位置,然后删除原文件。虽然这个方法可以完成任务,但显得不够优雅,且多次操作可能导致各种问题,因此我们寻求一个更简洁、一步到位的方案。在深入研究FTPClient的API后,我们...

FtpClient这个类的方法怎么用?
jdk1.7下其构造函数FtpClient()被定义为private类型,所以无法new了。 在jdk1.7,已经换成了 FtpClient.create(ip)方法.同时,其他的一些方法也基本都改掉了,如ftpClient.openServer(server); ftpClient.login(user, password);就可以换成:ftpClient.login(user, null, password); ftpClient.binary(); ---> ftp...

Java FTPClient 连接FTP,上传文件,不能以中文保存
在连接之前设置ftpClient.setControlEncoding("GBK");连接之后再设置是没有作用的。

java 在用 FtpClient 执行远程命令的时候 550 Delete operation failed...
删除权限不够?检查一下,文件夹的权限。可以在连接ftp服务器测试下。有的时候端口不通,也可能会出现这个问题

java中的ftpclient为什么无法实例化
建议不要用这个类,虽然以前有人摸索出这个类的用法 必须注意:1、这个类不在 API 文档中,属于暂未公开的类,所以它的用法天知地知,你不知我不知 2、因为未公开,所以这个类不会有向后兼容性,我们在 java 1.6 下用这个类实现的代码,在 1.7 中已经无法使用,因为在 java 1.7 中修改了...

JAVA编写FTP连接报错java.net.ConnectException: Connection refused...
你用的FTPClient引入不对吧,我们项目上都是用的 import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;import org.apache.commons.net.ftp.FTPReply;下面是我们项目上用到的FTP的实现代码(FTP需要先连接,再登录,之后就是校验登录是否成功),具体代码如下:\/**...

使用java通过ftp下载文件,ftpClient.listFiles获取不到当前路径下的文件...
回答:File dir=new File(".");\/\/当前路径是项目文件夹,是src外面而不是里面 File[]files=dir.listFiles(new FileFilter(){ @Override public boolean accept(File arg0) { return arg0.isFile(); } }); System.out.println("有文件"+files.length+"个");

java FtpClient 详细说明
如果你的 JDK 不是 Sun\/Oracle 的那就算了。如果你用的是 Sun\/Oracle 的 JDK,你可以尝试用 Eclipse 打开这个 FtpClient 类。按 Ctrl + Shift + T (Navigation 菜单上也有),然后输入 FtpClient,它会自动搜索猜测你的类名,打开后在 Outline (大纲) 视图中就有方法和字段名列表。

java FTPClient如何删除远程服务器端的文件夹及其子文件夹及其内容...
假如文件夹里面有文件的话,ftpclient根本删除不了文件夹,不像其他api可以自动递归删除,所以得先删除文件夹里面的文件,然后在删除文件夹,删除之前记得改变下工作目录 fileName是dirName里面的文件 ftpClient.changeWorkingDirectory(remoteDir+dirName)删除文件命令:ftpClient.deleteFile(fileName);删除完文件...

ftpclient创建多级目录慢
FTPClient 是 Java 用于访问 FTP 服务器的类库,它提供了一些方法用于创建目录。通常情况下,创建多级目录是一个相对较快的操作,但是有些情况下可能会导致慢的问题。下面我会介绍一些可能导致 FTPClient 创建多级目录慢的原因和解决方法。1. 网络问题: - 如果网络连接不稳定或带宽较低,可能会导致...

相似回答