JAVA中的FtpClient与FTPClient,并实现jsp页面下载ftp服务器上的文件

JAVA中的FtpClient与FTPClient,并实现jsp页面下载ftp服

务器上的文件

这段时间一直在研究Java如何访问Ftp,搞了一段时间了,也有一定的了解。故此记录一下。

ftp和FTP我个人觉得FTP更符合我们程序员的口味,不管是方法命名还是API的详细与否,或者是开发平台的问题,FTP毕竟是Apache的东西,做的就是不错。

其实web开发中一般都会涉及到编码问题,所以web上传下载一定会有中文乱码的问题存在,而FTP对中文的支持比ftp要好多了。

使用ftpClient不需要导入其它jar包,只要你使用java语言开发就行了,而使用FTPClient需要使用commons-net-1.4.1.jar和jakarta-oro-2.0.8.jar,当然jar版本随便你自己。 话不多说,上代码!

FTP服务器的文件目录结构图:

一、FtpClient

FtpClient是属于JDK的包下面的类,但是jdkapi并没有对此作介绍,在中文支持上面也有一定的限制。

本段代码中的Ftp服务器的IP地址,用户名和密码均通过SystemConfig.properties文档获取

Ftp_client.java

[java] view plain copy

1. package com.iodn.util; 2.

3. import java.io.ByteArrayOutputStream; 4. import java.io.File;

5. import java.io.FileInputStream; 6. import java.io.FileOutputStream; 7. import java.io.IOException; 8. import java.util.ResourceBundle; 9. import sun.net.TelnetInputStream; 10. import sun.net.TelnetOutputStream; 11. import sun.net.ftp.FtpClient; 12.

13. public class Ftp_client { 14.

15. //FTP客户端

16. private FtpClient ftpClient; 17. private ResourceBundle res=null; 18. /**

19. * 连接FTP服务器

20. * @param path 指定远程服务器上的路径 21. */

22. public Ftp_client(String path){ 23.

24. res = ResourceBundle.getBundle(\);//

获取配置文件propeties文档中的数据 25. try{

26. ftpClient=new FtpClient(res.getString(\));/

/如果不想使用配置文件即可将数据写死(如:192.168.1.10)

27. ftpClient.login(res.getString(\), res.getStri

ng(\));//Ftp服务器用户名和密码 28. ftpClient.binary();

29. System.out.println(\); 30. if(path.length()!=0){

31. //把远程系统上的目录切换到参数path所指定的目录(可不用设置,上传下

载删除时加Ftp中的全路径即可)

32. ftpClient.cd(path); 33. }

34. }catch(Exception e){ 35. e.printStackTrace(); 36. } 37. } 38. 39. /**

40. * 上传文件

41. * @param remoteFile 42. * @param localFile 43. */

44. public boolean upload(String remoteFile, String localFile){ 45. boolean bool=false;

46. TelnetOutputStream os=null; 47. FileInputStream is=null; 48. try{

49. os=ftpClient.put(remoteFile);

50. is=new FileInputStream(new File(localFile)); 51. byte[] b=new byte[1024]; 52. int c;

53. while((c=is.read(b))!=-1){ 54. os.write(b, 0, c); 55. }

56. bool=true; 57. }catch(Exception e){ 58. e.printStackTrace();

59. System.out.println(\上传文件失败!请检查系统FTP设置,并确认FTP

服务启动\);

60. }finally{

61. if(is!=null){ 62. try {

63. is.close();

64. } catch (IOException e) { 65. e.printStackTrace(); 66. } 67. }

68. if(os!=null){ 69. try {

70. os.close();

71. } catch (IOException e) { 72. e.printStackTrace();

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4