首页 > 开发 > Java > 正文

Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法

2024-07-13 09:56:06
字体:
来源:转载
供稿:网友

这篇文章主要介绍了Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法,需要的朋友可以参考下

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上传文件夹、检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码:

 

 
  1. package ftpDemo; 
  2. import java.io.DataOutputStream; 
  3. import java.io.InputStream; 
  4. import java.io.OutputStream; 
  5. import sun.net.TelnetInputStream; 
  6. import sun.net.TelnetOutputStream; 
  7. import sun.net.ftp.FtpClient; 
  8. public class ftpUtil { 
  9. // 上传文件至FTP通用方法 
  10. public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){ 
  11. try { 
  12. String ftpHost = kmConfig.getFtpHost(); 
  13. int port = kmConfig.getFtpPort(); 
  14. String userName = kmConfig.getFtpUser(); 
  15. String passWord = kmConfig.getFtpPassword(); 
  16. String path = kmConfig.getFtpPath(); 
  17. FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。 
  18. ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码 
  19. ftpClient.binary(); 
  20. ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。 
  21. TelnetOutputStream telnetOut = ftpClient.put(fileName);// fileName为上传的文件名 
  22. DataOutputStream dataOut = new DataOutputStream(telnetOut); 
  23. byte buffer[] = new byte[ * ]; 
  24. int count = ; 
  25. while ((count = is.read(buffer)) != -) { 
  26. dataOut.write(buffer, , count); 
  27. telnetOut.close(); 
  28. dataOut.close(); 
  29. ftpClient.closeServer(); 
  30. catch (Exception e) { 
  31. System.out.println("上传文件失败!请检查系统FTP设置,并确认FTP服务启动"); 
  32. // 删除文件至FTP通用方法 
  33. public static void deleteFileFtp(KmConfig kmConfig,String fileName){ 
  34. try { 
  35. String ftpHost = kmConfig.getFtpHost(); 
  36. int port = kmConfig.getFtpPort(); 
  37. String userName = kmConfig.getFtpUser(); 
  38. String passWord = kmConfig.getFtpPassword(); 
  39. String path = kmConfig.getFtpPath(); 
  40. FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。 
  41. ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码 
  42. ftpClient.binary(); 
  43. ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。 
  44. try { 
  45. ftpClient.sendServer("dele " + fileName + "/r/n"); 
  46. catch (Exception e) { 
  47. System.out.println("删除文件失败!请检查系统FTP设置,并确认FTP服务启动"); 
  48. ftpClient.closeServer(); 
  49. catch (Exception e) { 
  50. System.out.println("删除文件失败!"); 
  51. // 下载ftp文件 
  52. public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){ 
  53. try { 
  54. String ftpHost = kmConfig.getFtpHost(); 
  55. int port = kmConfig.getFtpPort(); 
  56. String userName = kmConfig.getFtpUser(); 
  57. String passWord = kmConfig.getFtpPassword(); 
  58. String path = kmConfig.getFtpPath(); 
  59. FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。 
  60. ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码 
  61. ftpClient.binary(); 
  62. ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。 
  63. try { 
  64. TelnetInputStream in = ftpClient.get(fileName); 
  65. byte[] bytes = new byte[]; 
  66. int cnt=; 
  67. while ((cnt=in.read(bytes,,bytes.length)) != -) { 
  68. outputStream.write(bytes, , cnt); 
  69. outputStream.close(); 
  70. in.close(); 
  71. catch (Exception e) { 
  72. ftpClient.closeServer(); 
  73. e.printStackTrace(); 
  74. ftpClient.closeServer(); 
  75. catch (Exception e) { 
  76. System.out.println("下载文件失败!请检查系统FTP设置,并确认FTP服务启动"); 
  77. //在ftp服务器上传件文件夹 
  78. public boolean createDir(String path,FtpClient ftpClient) throws Exception{ 
  79. //进入到home文件夹下 
  80. ftpClient.cd("/home"); 
  81. //创建远程文件夹 
  82. //远程命令包括 
  83. //USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT<br> 
  84. // PASS PASV STOR REST CWD STAT RMD XCUP OPTS<br> 
  85. // ACCT TYPE APPE RNFR XCWD HELP XRMD STOU AUTH<br> 
  86. // REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ<br> 
  87. // QUIT MODE SYST ABOR NLST MKD XPWD MDTM PROT<br> 
  88. // 在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n<br> 
  89. // ftpclient.sendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令<br> 
  90. // ftpclient.readServerResponse一定要在sendServer后调用<br> 
  91. // nameList("/test")获取指目录下的文件列表<br> 
  92. // XMKD建立目录,当目录存在的情况下再次创建目录时报错<br> 
  93. // XRMD删除目录<br> 
  94. // DELE删除文件<br> 
  95. //通过远程命令 穿件一个files文件夹 
  96. ftpClient.sendServer("MKD "+ path + "/r/n"); 
  97. //这个方法必须在 这两个方法中间调用 否则 命令不管用 
  98. ftpClient.binary(); 
  99. ftpClient.readServerResponse(); 
  100. return false
  101. /** 
  102. * 检查文件夹是否存在 
  103. * @param dir 
  104. * @param ftpClient 
  105. * @return 
  106. */ 
  107. public boolean isDirExist(String dir, FtpClient ftpClient) { 
  108. try { 
  109. ftpClient.cd(dir); 
  110. catch (Exception e) { 
  111. return false
  112. return true

KmConfig.java代码如下:定义FTP服务器参数,包括登录的用户名密码之类的。

 

 
  1. package ftpDemo; 
  2. public class KmConfig { 
  3. //主机ip 
  4. private String FtpHost = ""
  5. //端口号 
  6. private int FtpPort; 
  7. //ftp用户名 
  8. private String FtpUser = ""
  9. //ftp密码 
  10. private String FtpPassword = ""
  11. //ftp中的目录 
  12. private String FtpPath = ""
  13. public String getFtpHost() { 
  14. return FtpHost; 
  15. public void setFtpHost(String ftpHost) { 
  16. FtpHost = ftpHost; 
  17. public int getFtpPort() { 
  18. return FtpPort; 
  19. public void setFtpPort(int ftpPort) { 
  20. FtpPort = ftpPort; 
  21. public String getFtpUser() { 
  22. return FtpUser; 
  23. public void setFtpUser(String ftpUser) { 
  24. FtpUser = ftpUser; 
  25. public String getFtpPassword() { 
  26. return FtpPassword; 
  27. public void setFtpPassword(String ftpPassword) { 
  28. FtpPassword = ftpPassword; 
  29. public String getFtpPath() { 
  30. return FtpPath; 
  31. public void setFtpPath(String ftpPath) { 
  32. FtpPath = ftpPath; 

下面是测试代码:

 

 
  1. package ftpDemo; 
  2. import java.io.File; 
  3. import java.io.FileInputStream; 
  4. import java.io.FileNotFoundException; 
  5. import java.io.InputStream; 
  6. public class Test { 
  7. public static void main(String[] args) { 
  8. //设置ftp 
  9. KmConfig km = new KmConfig(); 
  10. km.setFtpHost("..."); 
  11. km.setFtpPort(); 
  12. km.setFtpUser("test"); 
  13. km.setFtpPassword(""); 
  14. km.setFtpPath("KM"); 
  15. //上传到ftp 
  16. ftpUtil util=new ftpUtil(); 
  17. File file = new File("F:/文章.jpg"); 
  18. InputStream in
  19. try { 
  20. in = new FileInputStream(file); 
  21. util.upLoadFileFtp(km, in"更改后的名字.jpg"); 
  22. catch (FileNotFoundException e) { 
  23. // TODO Auto-generated catch block 
  24. e.printStackTrace(); 

以上代码是小编给大家介绍关于Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法,希望大家喜欢。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表