当前位置: 首页 > >

apache 里commons包里的 ftp使用

发布时间:

由于最*重构别人的代码,发现了在使用ftp存在的问题,特记录如下:


?


FTP类来源:org.apache.commons.net.ftp.FTP


?


一般的同学都会写链接上ftp,由于是远程调用,程序要注意消息机制的处理。(链接失败怎么办)


?


重要问题在上传下载。


?


上传文件,基本上没问题


?


如果是文件夹呢?文件夹下又有文件夹。。。。


?


很多人会想到递归。对,就是递归。


?


但是,涉及到目录问题。往往会造成 文件和目录不对应的情况。


经过多番查找文档资料和自己亲自测试,终于弄明白了 changeWorkingDirectory(str);这个方法参数的含义。


?


eg: 目录A/B/C/D


?


首先,默认的的目录在ftp根目录下假设为 /home/ftp


?


如果,我要进到D目录,如何设置?


?


changeWorkingDirectory(A/B/C/D) ;即可


?


在此基础上,要回到B目录,该如何?


是否changeWorkingDirectory(A/B);?肯定错误!


?


应该 使用 changeToParentDirtory(),2次调用退到B目录下。


?


假如我在A目录下,进入C目录,是否能这么写


?


changeWorkingDirectory(A/B/C)?错误。


?


在A目录下,就不要再在路径中包含A了。应该直接changeWorkingDirectory(B/C);


?


?


总结如下:1、前进就用changeWorkingDirectory(str),这个str只能是该目录的下级目录,注意,下级目录中若有不存在,也会返回false


?????????????? 2、后退就要用changeToParentDirectory()。顾名思义,从当前目录退到上级目录。


?


?


该总结是经过了鄙人多天的查资料,多次反复测试得出来的。API文档是没有写这么详细的。


?


?


当然还有个解决方案也可以说下:


?


在客户端将要上传的文件夹压缩,然后通过ftp传至服务器端。服务器端写一个监听线程,只要有相应的压缩包过来,就立刻解压。


压缩名最好开始不要定成zip格式,例如: example.tmp??。等要解压的时候,改名,并解压。????????????????


?


?


?


?



友情链接: