敬的世界

          導航

          <2008年10月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          留言簿(7)

          隨筆分類(21)

          文章分類

          收藏夾

          隨筆檔案(49)

          文章檔案(4)

          閱讀排行榜

          評論排行榜

          常用鏈接

          統計

          最新評論

          JAVA中使用FTPClient上傳下載(轉載)

          轉載地址: http://blog.csdn.net/hbcui1984/archive/2008/07/27/2720204.aspx

          在JAVA程序中,經常需要和FTP打交道,比如向FTP服務器上傳文件、下載文件,本文簡單介紹如何利用jakarta commons中的FTPClient(在commons-net包中)實現上傳下載文件。

          一、上傳文件

          ???????? 原理就不介紹了,大家直接看代碼吧

          1. /**
          2. * Description: 向FTP服務器上傳文件
          3. * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔紅保(cuihongbao@d-heaven.com)創建
          4. * @param url FTP服務器hostname
          5. * @param port FTP服務器端口
          6. * @param username FTP登錄賬號
          7. * @param password FTP登錄密碼
          8. * @param path FTP服務器保存目錄
          9. * @param filename 上傳到FTP服務器上的文件名
          10. * @param input 輸入流
          11. * @return 成功返回true,否則返回false
          12. */ ??
          13. public static boolean uploadFile(String url, int port,String username, String password, String path, String filename, InputStream input) { ??
          14. ???? boolean success = false ; ??
          15. ???? FTPClient ftp = new FTPClient(); ??
          16. ???? try { ??
          17. ???????? int reply; ??
          18. ???????? ftp.connect(url, port); //連接FTP服務器 ??
          19. ???????? //如果采用默認端口,可以使用ftp.connect(url)的方式直接連接FTP服務器 ??
          20. ???????? ftp.login(username, password); //登錄 ??
          21. ???????? reply = ftp.getReplyCode(); ??
          22. ???????? if (!FTPReply.isPositiveCompletion(reply)) { ??
          23. ???????????? ftp.disconnect(); ??
          24. ???????????? return success; ??
          25. ???????? } ??
          26. ???????? ftp.changeWorkingDirectory(path); ??
          27. ???????? ftp.storeFile(filename, input);????????? ??
          28. ???????? ??
          29. ???????? input.close(); ??
          30. ???????? ftp.logout(); ??
          31. ???????? success = true ; ??
          32. ???? } catch (IOException e) { ??
          33. ???????? e.printStackTrace(); ??
          34. ???? } finally { ??
          35. ???????? if (ftp.isConnected()) { ??
          36. ???????????? try { ??
          37. ???????????????? ftp.disconnect(); ??
          38. ???????????? } catch (IOException ioe) { ??
          39. ???????????? } ??
          40. ???????? } ??
          41. ???? } ??
          42. ???? return success; ??
          43. }

          下面我們寫兩個小例子:

          1.將本地文件上傳到FTP服務器上,代碼如下:

          1. @Test ??
          2. public void testUpLoadFromDisk(){ ??
          3. ???? try { ??
          4. ???????? FileInputStream in= new FileInputStream( new File( "D:/test.txt" )); ??
          5. ???????? boolean flag = uploadFile( "127.0.0.1" , 21 , "test" , "test" , "D:/ftp" , "test.txt" , in); ??
          6. ???????? System.out.println(flag); ??
          7. ???? } catch (FileNotFoundException e) { ??
          8. ???????? e.printStackTrace(); ??
          9. ???? } ??
          10. }

          2.在FTP服務器上生成一個文件,并將一個字符串寫入到該文件中

          1. @Test ??
          2. public void testUpLoadFromString(){ ??
          3. ???? try { ??
          4. ???????? InputStream input = new ByteArrayInputStream( "test ftp" .getBytes( "utf-8" )); ??
          5. ???????? boolean flag = uploadFile( "127.0.0.1" , 21 , "test" , "test" , "D:/ftp" , "test.txt" , input); ??
          6. ???????? System.out.println(flag); ??
          7. ???? } catch (UnsupportedEncodingException e) { ??
          8. ???????? e.printStackTrace(); ??
          9. ???? } ??
          10. }

          二、下載文件

          ?????? 從FTP服務器下載文件的代碼也很簡單,參考如下:

          1. /**
          2. * Description: 從FTP服務器下載文件
          3. * @Version1.0 Jul 27, 2008 5:32:36 PM by 崔紅保(cuihongbao@d-heaven.com)創建
          4. * @param url FTP服務器hostname
          5. * @param port FTP服務器端口
          6. * @param username FTP登錄賬號
          7. * @param password FTP登錄密碼
          8. * @param remotePath FTP服務器上的相對路徑
          9. * @param fileName 要下載的文件名
          10. * @param localPath 下載后保存到本地的路徑
          11. * @return
          12. */ ??
          13. public static boolean downFile(String url, int port,String username, String password, String remotePath,String fileName,String localPath) { ??
          14. ???? boolean success = false ; ??
          15. ???? FTPClient ftp = new FTPClient(); ??
          16. ???? try { ??
          17. ???????? int reply; ??
          18. ???????? ftp.connect(url, port); ??
          19. ???????? //如果采用默認端口,可以使用ftp.connect(url)的方式直接連接FTP服務器 ??
          20. ???????? ftp.login(username, password); //登錄 ??
          21. ???????? reply = ftp.getReplyCode(); ??
          22. ???????? if (!FTPReply.isPositiveCompletion(reply)) { ??
          23. ???????????? ftp.disconnect(); ??
          24. ???????????? return success; ??
          25. ???????? } ??
          26. ???????? ftp.changeWorkingDirectory(remotePath); //轉移到FTP服務器目錄 ??
          27. ???????? FTPFile[] fs = ftp.listFiles(); ??
          28. ???????? for (FTPFile ff:fs){ ??
          29. ???????????? if (ff.getName().equals(fileName)){ ??
          30. ???????????????? File localFile = new File(localPath+ "/" +ff.getName()); ??
          31. ???????????????? ??
          32. ???????????????? OutputStream is = new FileOutputStream(localFile); ??
          33. ???????????????? ftp.retrieveFile(ff.getName(), is); ??
          34. ???????????????? is.close(); ??
          35. ???????????? } ??
          36. ???????? } ??
          37. ???????? ??
          38. ???????? ftp.logout(); ??
          39. ???????? success = true ; ??
          40. ???? } catch (IOException e) { ??
          41. ???????? e.printStackTrace(); ??
          42. ???? } finally { ??
          43. ???????? if (ftp.isConnected()) { ??
          44. ???????????? try { ??
          45. ???????????????? ftp.disconnect(); ??
          46. ???????????? } catch (IOException ioe) { ??
          47. ???????????? } ??
          48. ???????? } ??
          49. ???? }???
          50. ???? return success; ??
          51. }

          posted on 2008-10-05 16:02 picture talk 閱讀(419) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 南和县| 曲阜市| 广宗县| 泉州市| 五河县| 七台河市| 西藏| 普兰店市| 延津县| 女性| 黄石市| 江口县| 承德县| 长治市| 克山县| 资源县| 洛扎县| 会东县| 宁陵县| 永嘉县| 靖江市| 高尔夫| 饶阳县| 汉源县| 饶平县| 宿迁市| 合阳县| 南昌市| 沙湾县| 德兴市| 香港| 盐池县| 中江县| 峨山| 安阳市| 仪陇县| 垫江县| 武功县| 宽甸| 阿鲁科尔沁旗| 塘沽区|