Java_FTPClient实现文件上传下载

from: http://www.open-open.com/lib/view/open1333860679171.html

 

 

  • 所用到的jar包有:  
  • commons-net-1.4.1.jar  
  • jakarta-oro.jar  

 

一、上传文件

01文件上传源代码 
02             /**  
03      * Description: 向FTP服务器上传文件  
04      * @Version1.0  
05      * @param url FTP服务器hostname  
06      * @param port FTP服务器端口  
07      * @param username FTP登录账号  
08      * @param password FTP登录密码  
09      * @param path FTP服务器保存目录  
10      * @param filename 上传到FTP服务器上的文件名  
11      * @param input 输入流  
12      * @return 成功返回true,否则返回false  
13      */   
14     public static boolean uploadFile( 
15             String url,//FTP服务器hostname  
16             int port,//FTP服务器端口 
17             String username, // FTP登录账号  
18             String password, //FTP登录密码 
19             String path, //FTP服务器保存目录 
20             String filename, //上传到FTP服务器上的文件名  
21             InputStream input // 输入流  
22             ) {   
23         boolean success = false;   
24         FTPClient ftp = new FTPClient();   
25         try {   
26             int reply;   
27             ftp.connect(url, port);//连接FTP服务器    
28             //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器    
29             ftp.login(username, password);//登录    
30             reply = ftp.getReplyCode();   
31             if (!FTPReply.isPositiveCompletion(reply)) {   
32                 ftp.disconnect();   
33                 return success;   
34             }   
35             ftp.changeWorkingDirectory(path);   
36             ftp.storeFile(filename, input);            
37                  
38             input.close();   
39             ftp.logout();   
40             success = true;   
41         catch (IOException e) {   
42             e.printStackTrace();   
43         finally {   
44             if (ftp.isConnected()) {   
45                 try {   
46                     ftp.disconnect();   
47                 catch (IOException ioe) {   
48                 }   
49             }   
50         }   
51         return success;   
52     }

以下是文件上传的测试用例:

01/** 
02  * 将本地文件上传到FTP服务器上 
03  
04  */ 
05 public void testUpLoadFromDisk(){   
06     try {   
07         FileInputStream in=new FileInputStream(new File("D:/test.txt"));   
08         boolean flag = uploadFile("127.0.0.1"21"administrator""zyuc2011""test","test.txt", in);   
09         System.out.println(flag);   
10     catch (FileNotFoundException e) {   
11         e.printStackTrace();   
12     }    
13}

 

01/** 
02  * 在FTP服务器上生成一个文件,并将一个字符串写入到该文件中 
03  
04  */ 
05 public void testUpLoadFromString(){   
06     try {   
07         String str = "这是要写入的字符串!"
08         InputStream input = new ByteArrayInputStream(str.getBytes("utf-8"));   
09         boolean flag = uploadFile("127.0.0.1"21"administrator""zyuc2011""test","test.txt", input);   
10         System.out.println(flag);   
11     catch (UnsupportedEncodingException e) {   
12         e.printStackTrace();   
13     }   
14}

二、文件下载

01文件下载源代码 
02     /**  
03      * Description: 从FTP服务器下载文件  
04      * @Version1.0  
05      * @param url FTP服务器hostname  
06      * @param port FTP服务器端口  
07      * @param username FTP登录账号  
08      * @param password FTP登录密码  
09      * @param remotePath FTP服务器上的相对路径  
10      * @param fileName 要下载的文件名  
11      * @param localPath 下载后保存到本地的路径  
12      * @return  
13      */   
14     public static boolean downFile( 
15             String url, //FTP服务器hostname 
16             int port,//FTP服务器端口 
17             String username, //FTP登录账号 
18             String password, //FTP登录密码 
19             String remotePath,//FTP服务器上的相对路径  
20             String fileName,//要下载的文件名 
21             String localPath//下载后保存到本地的路径 
22             ) {   
23         boolean success = false;   
24         FTPClient ftp = new FTPClient();   
25         try {   
26             int reply;   
27             ftp.connect(url, port);   
28             //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器    
29             ftp.login(username, password);//登录    
30             reply = ftp.getReplyCode();   
31             if (!FTPReply.isPositiveCompletion(reply)) {   
32                 ftp.disconnect();   
33                 return success;   
34             }   
35             ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录    
36             FTPFile[] fs = ftp.listFiles();   
37             for(FTPFile ff:fs){   
38                 if(ff.getName().equals(fileName)){   
39                     File localFile = new File(localPath+"/"+ff.getName());   
40                     OutputStream is = new FileOutputStream(localFile);    
41                     ftp.retrieveFile(ff.getName(), is);   
42                     is.close();   
43                 }   
44             }   
45                  
46             ftp.logout();   
47             success = true;   
48         catch (IOException e) {   
49             e.printStackTrace();   
50         finally {   
51             if (ftp.isConnected()) {   
52                 try {   
53                     ftp.disconnect();   
54                 catch (IOException ioe) {   
55                 }   
56             }   
57         }   
58         return success;   
59     }

以下是文件下载的测试用例:

01/** 
02  * 将FTP服务器上文件下载到本地 
03  
04  */ 
05 public void testDownFile(){ 
06     try {   
07         boolean flag = downFile("127.0.0.1"21"administrator""zyuc2011""test","test.txt""D:/");   
08         System.out.println(flag);   
09     catch (Exception e) {   
10         e.printStackTrace();   
11     }        
12}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值