java实现ftp文件的上传与下载

转自:http://blog.csdn.net/zhengshuoa/article/details/53070560?locationNum=8&fps=1

一共三个类,一个工具类Ftputil.,一个实体类Kmconfig。一个测试类Test

 下载地址:http://download.csdn.net/detail/myfmyfmyfmyf/6697107

Ftputil类---------------

 

    package ftpDemo;  
      
    import java.io.DataOutputStream;  
    import java.io.InputStream;  
    import java.io.OutputStream;  
      
    import sun.net.TelnetInputStream;  
    import sun.net.TelnetOutputStream;  
    import sun.net.ftp.FtpClient;  
      
      
      
    public class ftpUtil {  
        // 上传文件至FTP通用方法  
        public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){  
      
            try {  
                String ftpHost = kmConfig.getFtpHost();  
                int port = kmConfig.getFtpPort();  
                String userName = kmConfig.getFtpUser();  
                String passWord = kmConfig.getFtpPassword();  
                String path = kmConfig.getFtpPath();  
                  
      
                FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。  
                ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码  
                ftpClient.binary();  
                ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。  
      
                TelnetOutputStream telnetOut = ftpClient.put(fileName);// fileName为上传的文件名  
                DataOutputStream dataOut = new DataOutputStream(telnetOut);  
                byte buffer[] = new byte[1024 * 1024];  
                int count = 0;  
                while ((count = is.read(buffer)) != -1) {  
                    dataOut.write(buffer, 0, count);  
                }  
                telnetOut.close();  
                dataOut.close();  
                ftpClient.closeServer();  
            } catch (Exception e) {  
                System.out.println("上传文件失败!请检查系统FTP设置,并确认FTP服务启动");  
            }  
        }  
      
        // 删除文件至FTP通用方法  
        public static void deleteFileFtp(KmConfig kmConfig,String fileName){  
            try {  
                String ftpHost = kmConfig.getFtpHost();  
                int port = kmConfig.getFtpPort();  
                String userName = kmConfig.getFtpUser();  
                String passWord = kmConfig.getFtpPassword();  
                String path = kmConfig.getFtpPath();  
      
                FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。  
                ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码  
                ftpClient.binary();  
                ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。  
                try {  
                    ftpClient.sendServer("dele " + fileName + "\r\n");  
                } catch (Exception e) {  
                    System.out.println("删除文件失败!请检查系统FTP设置,并确认FTP服务启动");  
                }  
                ftpClient.closeServer();  
            } catch (Exception e) {  
                System.out.println("删除文件失败!");  
            }  
        }  
      
        // 下载ftp文件  
        public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){  
            try {  
                String ftpHost = kmConfig.getFtpHost();  
                int port = kmConfig.getFtpPort();  
                String userName = kmConfig.getFtpUser();  
                String passWord = kmConfig.getFtpPassword();  
                String path = kmConfig.getFtpPath();  
      
                FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。  
                ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码  
                ftpClient.binary();  
                ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。  
                try {  
                    TelnetInputStream in = ftpClient.get(fileName);  
                    byte[] bytes = new byte[1024];  
                    int cnt=0;  
                    while ((cnt=in.read(bytes,0,bytes.length)) != -1) {  
                        outputStream.write(bytes, 0, cnt);  
                    }  
                    outputStream.close();  
                    in.close();  
                } catch (Exception e) {  
                    ftpClient.closeServer();  
                    e.printStackTrace();  
                }  
                ftpClient.closeServer();  
            } catch (Exception e) {  
                System.out.println("下载文件失败!请检查系统FTP设置,并确认FTP服务启动");  
            }  
        }  
      
        //在ftp服务器上穿件文件夹     
            public boolean createDir(String path,FtpClient ftpClient) throws Exception{    
                    
                 
                //进入到home文件夹下     
                ftpClient.cd("/home");    
                //创建远程文件夹      
               //远程命令包括     
               //USER    PORT    RETR    ALLO    DELE    SITE    XMKD    CDUP    FEAT<br>     
    //          PASS    PASV    STOR    REST    CWD     STAT    RMD     XCUP    OPTS<br>     
    //          ACCT    TYPE    APPE    RNFR    XCWD    HELP    XRMD    STOU    AUTH<br>     
    //          REIN    STRU    SMNT    RNTO    LIST    NOOP    PWD     SIZE    PBSZ<br>     
    //          QUIT    MODE    SYST    ABOR    NLST    MKD     XPWD    MDTM    PROT<br>     
    //               在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n<br>     
    //                    ftpclient.sendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令<br>     
    //                    ftpclient.readServerResponse一定要在sendServer后调用<br>     
    //                    nameList("/test")获取指目录下的文件列表<br>     
    //                    XMKD建立目录,当目录存在的情况下再次创建目录时报错<br>     
    //                    XRMD删除目录<br>     
    //                    DELE删除文件<br>     
               //通过远程命令 穿件一个files文件夹     
                ftpClient.sendServer("MKD "+ path + "\r\n");    
                //这个方法必须在 这两个方法中间调用 否则 命令不管用     
                ftpClient.binary();    
                ftpClient.readServerResponse();    
                    
                return false;    
            }    
      
      
      
    /**  
      * 检查文件夹是否存在  
      * @param dir  
      * @param ftpClient  
      * @return  
      */   
        public boolean isDirExist(String dir, FtpClient ftpClient) {   
             try {   
                ftpClient.cd(dir);   
            } catch (Exception e) {   
          
                return false;   
            }   
            return true;   
        }   
      
    }  

Kmconfig类------------

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package ftpDemo;  
  2.   
  3. public class KmConfig {  
  4.     //主机ip  
  5.     private String FtpHost = "";  
  6.     //端口号  
  7.     private int FtpPort;  
  8.     //ftp用户名  
  9.     private String FtpUser = "";  
  10.     //ftp密码  
  11.     private String FtpPassword = "";  
  12.     //ftp中的目录  
  13.     private String FtpPath = "";  
  14.     public String getFtpHost() {  
  15.         return FtpHost;  
  16.     }  
  17.     public void setFtpHost(String ftpHost) {  
  18.         FtpHost = ftpHost;  
  19.     }  
  20.     public int getFtpPort() {  
  21.         return FtpPort;  
  22.     }  
  23.     public void setFtpPort(int ftpPort) {  
  24.         FtpPort = ftpPort;  
  25.     }  
  26.     public String getFtpUser() {  
  27.         return FtpUser;  
  28.     }  
  29.     public void setFtpUser(String ftpUser) {  
  30.         FtpUser = ftpUser;  
  31.     }  
  32.     public String getFtpPassword() {  
  33.         return FtpPassword;  
  34.     }  
  35.     public void setFtpPassword(String ftpPassword) {  
  36.         FtpPassword = ftpPassword;  
  37.     }  
  38.     public String getFtpPath() {  
  39.         return FtpPath;  
  40.     }  
  41.     public void setFtpPath(String ftpPath) {  
  42.         FtpPath = ftpPath;  
  43.     }  
  44.       
  45.       
  46.       
  47. }  


 

Test类---------------

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package ftpDemo;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileNotFoundException;  
  6. import java.io.InputStream;  
  7.   
  8. public class Test {  
  9.     public static void main(String[] args) {  
  10.         //设置ftp  
  11.         KmConfig km = new KmConfig();  
  12.         km.setFtpHost("172.20.32.48");  
  13.         km.setFtpPort(21);  
  14.         km.setFtpUser("test");  
  15.         km.setFtpPassword("111111");  
  16.         km.setFtpPath("KM");  
  17.           
  18.         //上传到ftp  
  19.         ftpUtil util=new ftpUtil();  
  20.         File file = new File("F:/文章2.jpg");  
  21.         InputStream in;  
  22.         try {  
  23.             in = new FileInputStream(file);  
  24.             util.upLoadFileFtp(km, in, "更改后的名字.jpg");  
  25.         } catch (FileNotFoundException e) {  
  26.             // TODO Auto-generated catch block  
  27.             e.printStackTrace();  
  28.         }  
  29.           
  30.           
  31.         //页面访问: ftp://账户:密码@ip地址:端口号/文件夹目录/  
  32.         //  ftp://test:111111@222.22.22.11:21/image/  
  33.     }  
  34. }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值