java代码 经已连接成功linux ftp服务器,但是就是上传不了文件
你是想从服务器下载文件吧?那应该用retrieveFile(String remote, OutputStream local),而不是storefile啊,自己看看API
http://commonsapacheorg/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClienthtml
flag = ftpClientretrieveFile(remoteFileName, os); os为远程文件的outputStream |remoteFileName为A服务器上文件名
flag = ftpClientstoreFile(remoteFileName, is);is为远程文件的inputSteam |remoteFileName为C服务器上文件名
由此可见这个地方还是相当纠结的,必须要用B服务器做个中转,利用B服务器上文件的OutputStream 和InputStream 所以如果文件不大的话当文件经B上传到C服务器后立即把B红的临时文件删掉就好了
当然你也可以试试
storeFileStream(String remote);来获得C上文件的OutputStream 在利用 ftpClientretrieveFile(remoteFileName, os);来上传,但是这种方法我没试过,你可以尝试一下,如果成功了请告诉我结果,谢谢
public void ftpJdomFile(String dir) throws FileNotFoundException, IOException{
//创立根节点
// 下面这个方法是列出指定目录下的所有文件和文件夹
List dirslist=ArraysasList(new File(dir)listFiles());
for (Iterator i = dirslistiterator(); ihasNext();) {
// Systemoutprintln(inext()); // line 1
String s=inext()toString();
if (new File(s)isFile()) {
Systemoutprintln(s+"-文件");
}
if (new File(s)isDirectory()) {
Systemoutprintln(s+"++++++++文件夹");
ftpJdomFile(s);
}
}
}
你有FTPClient就比较好办,假如你的两台FTP服务器分别为fs1和fs2
在本地开发代码思路如下:
通过FTPClient连接上fs1,然后下载(可以循环批量下载)到本地服务器,保存到一个临时目录。
下载完成后,FTPClient断开与fs1的连接,记得必须logout。
本地服务器通过FileInputStream将刚下载到临时目录的文件读进来,得到一个List<File>集合。
通过FTPClient连接上fs2,循环List<File>集合,将文件上传至fs2的特定目录,然后清空临时目录,上传完毕后,断开fs2的连接,同样必须logout。
0条评论