敬的世界

          常用鏈接

          統(tǒng)計

          最新評論

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

          轉(zhuǎn)載地址: http://blog.csdn.net/hbcui1984/archive/2008/07/27/2720204.aspx

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

          一、上傳文件

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

          1. /**
          2. * Description: 向FTP服務(wù)器上傳文件
          3. * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔紅保(cuihongbao@d-heaven.com)創(chuàng)建
          4. * @param url FTP服務(wù)器hostname
          5. * @param port FTP服務(wù)器端口
          6. * @param username FTP登錄賬號
          7. * @param password FTP登錄密碼
          8. * @param path FTP服務(wù)器保存目錄
          9. * @param filename 上傳到FTP服務(wù)器上的文件名
          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服務(wù)器 ??
          19. ???????? //如果采用默認端口,可以使用ftp.connect(url)的方式直接連接FTP服務(wù)器 ??
          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服務(wù)器上,代碼如下:

          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服務(wù)器上生成一個文件,并將一個字符串寫入到該文件中

          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服務(wù)器下載文件的代碼也很簡單,參考如下:

          1. /**
          2. * Description: 從FTP服務(wù)器下載文件
          3. * @Version1.0 Jul 27, 2008 5:32:36 PM by 崔紅保(cuihongbao@d-heaven.com)創(chuàng)建
          4. * @param url FTP服務(wù)器hostname
          5. * @param port FTP服務(wù)器端口
          6. * @param username FTP登錄賬號
          7. * @param password FTP登錄密碼
          8. * @param remotePath FTP服務(wù)器上的相對路徑
          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服務(wù)器 ??
          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); //轉(zhuǎn)移到FTP服務(wù)器目錄 ??
          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)  編輯  收藏


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 高邮市| 获嘉县| 中阳县| 鸡东县| 方正县| 开原市| 赣榆县| 永川市| 新巴尔虎右旗| 新乐市| 东至县| 聊城市| 会理县| 库车县| 宁国市| 进贤县| 保康县| 平果县| 乳山市| 吉水县| 喀喇| 博野县| 荣昌县| 嵊州市| 抚松县| 合川市| 军事| 曲阜市| 靖江市| 乐山市| 来安县| 海南省| 武清区| 赣州市| 沈丘县| 登封市| 云梦县| 钦州市| 平乐县| 尼木县| 盐池县|