Java - FTP複製檔案至指定目錄

在這邊要說明的是,如何在FTP目錄內將檔案複製至其它目錄(非local),以達到檔案間的複

製操作!

在這邊使用的套件為:FTPClient - EnterpriseDT

一般來說我們通常會針對FTP做基本的上傳及下載檔案的操作,而如果您要在FTP上直接將

檔案做copy至其它線上的目錄的話,在此將利用該套件API的get method,只不過需使用的

是回傳byte array,而並非指定localFile的。

 byte[]get(java.lang.String remoteFile)
          Get data from the FTP server.
 voidget(java.lang.String localPath, java.lang.String remoteFile)
          Get data from the FTP server.
節錄至API文件

當您取得了檔案的位元組資料後,此時您要將資料寫入至指定的目錄,此時可以查閱put

method,但我們這邊的來源已經不是localFile,而是剛剛的byte array。

java.lang.Stringput(byte[] bytes, java.lang.String remoteFile)
          Put data onto the FTP server.
 java.lang.Stringput(java.lang.String localPath, java.lang.String remoteFile)
          Put a local file onto the FTP server.
節錄至API文件
PS. 若檔案存在將會複寫過去!!

簡單的範例如下:
  1. private static FTPClient ftp;
  2. static String FTP_SERVER="127.0.0.1";
  3. static String FTP_ID="test";
  4. static String FTP_PW="test";
  5. static String FTP_DIR = "FTPTest";
  6. /**
  7. * @param args
  8. */
  9. public static void main(String[] args) {
  10. // TODO Auto-generated method stub
  11. ftp=new FTPClient();
  12. System.out.println("正在連線到...." + FTP_SERVER);
  13. try {
  14. ftp.setRemoteHost(FTP_SERVER);
  15. ftp.connect();
  16. ftp.login(FTP_ID,FTP_PW);
  17. ftp.setConnectMode(FTPConnectMode.PASV);
  18. ftp.setType(FTPTransferType.BINARY);
  19. System.out.println("切換目錄到:"+FTP_DIR);
  20. ftp.chdir(FTP_DIR);
  21. System.out.println("連線成功....");
  22. ftp.chdir("TYPE_2//KIND_3");
  23. byte[] fileTmp = ftp.get("123.doc");
  24. FTPReply reply=ftp.sendCommand("CDUP");
  25. System.out.println(reply.getReplyText());
  26. ftp.put(fileTmp, "1235.doc");
  27. } catch (Exception e) {
  28. // TODO Auto-generated catch block
  29. e.printStackTrace();
  30. } finally{
  31. try {
  32. ftp.quit();
  33. System.out.println("關閉FTP連線!!");
  34. } catch (IOException e) {
  35. // TODO Auto-generated catch block
  36. e.printStackTrace();
  37. } catch (FTPException e) {
  38. // TODO Auto-generated catch block
  39. e.printStackTrace();
  40. }
  41. }
  42. }

執行結果如下:

留言