java操作ftp 上传下载创建文件夹

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. import java.io.DataInputStream;   
  2. import java.io.FileOutputStream;   
  3. import java.io.IOException;   
  4. import java.io.FileInputStream;   
  5. import java.util.ArrayList;   
  6. import java.util.Date;   
  7. import java.util.List;   
  8. import sun.net.*;   
  9. import sun.net.ftp.FtpClient;  
  10. //2、我们建一个叫做FtpUtil的class  
  11.     public class FtpUtil{  
  12.         //创建ftp服务器  
  13.         FtpClient ftpClient;  
  14.          /**  
  15.          * connectServer  
  16.          * 连接ftp服务器  
  17.          * @throws java.io.IOException  
  18.          * @param path 文件夹,空代表根目录  
  19.          * @param password 密码  
  20.          * @param user    登陆用户  
  21.          * @param server 服务器地址  
  22.          */   
  23.       public void connectServer(String server, String user, String password,  String path)   
  24.       throws IOException   
  25.        {   
  26.          // server:FTP服务器的IP地址;user:登录FTP服务器的用户名   
  27.          // password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径   
  28.           ftpClient = new FtpClient();   
  29.           //开启服务  
  30.           ftpClient.openServer(server);  
  31.           //登录  
  32.           ftpClient.login(user, password);   
  33.          //path是ftp服务下主目录的子目录   
  34.          if (path.length() != 0)   ftpClient.cd(path);   
  35.          //用2进制上传、下载   
  36.           ftpClient.binary();        
  37.     }   
  38.   
  39.     /**  
  40.          * upload  
  41.          * 上传文件  
  42.          * @throws java.lang.Exception  
  43.          * @return -1 文件不存在  
  44.          *           -2 文件内容为空  
  45.          *           >0 成功上传,返回文件的大小  
  46.          * @param newname 上传后的新文件名  
  47.          * @param filename 上传的文件  
  48.          */   
  49.     public long upload(String filename,String newname) throws Exception   
  50.     {   
  51.          long result = 0;   
  52.             //ftp输出流  
  53.           TelnetOutputStream os = null;  
  54.             
  55.           FileInputStream is = null;   
  56.          try {            
  57.               java.io.File file_in = new java.io.File(filename);   
  58.              if (!file_in.exists()) return -1;   
  59.              if (file_in.length()==0return -2;  
  60.                 //ftpclient的put方法 调用后将路径传进去 返回TelnetOutputStream 就可以进行文件上传操作了  
  61.               os = ftpClient.put(newname);   
  62.               result = file_in.length();   
  63.               is = new FileInputStream(file_in);   
  64.              byte[] bytes = new byte[1024];   
  65.              int c;   
  66.              while ((c = is.read(bytes)) != -1) {   
  67.                    os.write(bytes, 0, c);   
  68.               }   
  69.           } finally {   
  70.              if (is != null) {   
  71.                   is.close();   
  72.               }   
  73.              if (os != null) {   
  74.                  os.close();   
  75.               }   
  76.           }   
  77.         return result;   
  78.     }   
  79.     /**  
  80.          * upload  
  81.          * @throws java.lang.Exception  
  82.          * @return  
  83.          * @param filename  
  84.          */   
  85.     public long upload(String filename)   
  86.     throws Exception   
  87.     {   
  88.         String newname = "";   
  89.         if (filename.indexOf("/")>-1)   
  90.          {   
  91.             newname = filename.substring(filename.lastIndexOf("/")+1);  
  92.          }else   
  93.          {   
  94.             newname = filename;   
  95.          }   
  96.         return upload(filename,newname);   
  97.     }   
  98.   
  99.     /**  
  100.          *   download  
  101.          *   从ftp下载文件到本地  
  102.          * @throws java.lang.Exception  
  103.          * @return  
  104.          * @param newfilename 本地生成的文件名  
  105.          * @param filename 服务器上的文件名  
  106.          */   
  107.     public long download(String filename,String newfilename)   
  108.     throws Exception   
  109.     {     
  110.         long result = 0;   
  111.          TelnetInputStream is = null;   
  112.          FileOutputStream os = null;   
  113.         try   
  114.          {   
  115.             is = ftpClient.get(filename);          
  116.             java.io.File outfile = new java.io.File(newfilename);   
  117.             os = new FileOutputStream(outfile);   
  118.            byte[] bytes = new byte[1024];   
  119.            int c;   
  120.            while ((c = is.read(bytes)) != -1) {   
  121.                 os.write(bytes, 0, c);   
  122.                 result = result + c;   
  123.             }   
  124.          } catch (IOException e)   
  125.          {   
  126.             e.printStackTrace();   
  127.          }   
  128.         finally {   
  129.              if (is != null) {   
  130.                   is.close();   
  131.               }   
  132.              if (os != null) {   
  133.                  os.close();   
  134.               }   
  135.           }   
  136.          return result;   
  137.     }   
  138.     /**  
  139.        * 取得某个目录下的所有文件列表  
  140.        *  
  141.        */   
  142.     public List getFileList(String path)   
  143.     {   
  144.          List list = new ArrayList();   
  145.         try   
  146.          {   
  147.             DataInputStream dis = new   DataInputStream(ftpClient.nameList(path));   
  148.            String filename = "";   
  149.            while((filename=dis.readLine())!=null)     
  150.             {     
  151.               list.add(filename);           
  152.             }     
  153.           
  154.          } catch (Exception e)   
  155.          {   
  156.             e.printStackTrace();   
  157.          }   
  158.         return list;   
  159.     }   
  160.   
  161.     /**  
  162.          * closeServer  
  163.          * 断开与ftp服务器的链接  
  164.          * @throws java.io.IOException  
  165.          */   
  166.     public void closeServer()   
  167.     throws IOException   
  168.     {      
  169.        try   
  170.         {   
  171.           if (ftpClient != null)   
  172.            {   
  173.              ftpClient.closeServer();        
  174.            }   
  175.         } catch (IOException e) {   
  176.            e.printStackTrace();   
  177.         }   
  178.     }   
  179.          
  180.       public static void main(String [] args) throws Exception   
  181.        {   
  182.          FtpUtil ftp = new FtpUtil();   
  183.         try {   
  184.              //连接ftp服务器   
  185.               ftp.connectServer("172.19.11.103""weblogic""weblogic""/home/files");   
  186.                 
  187.               ftp.createDir("files");  
  188.              /**   上传文件到 files 文件夹下 */   
  189.               System.out.println("filesize:"+ftp.upload("f:/download/Install.exe")+"字节");   
  190.              /** 取得files文件夹下的所有文件列表,并下载到 E盘下 */   
  191.               List list = ftp.getFileList(".");   
  192.              for (int i=0;i<list.size();i++)   
  193.               {   
  194.                 String filename = (String)list.get(i);   
  195.                  System.out.println(filename);   
  196.                  ftp.download(filename,"E:/"+filename);   
  197.               }   
  198.          } catch (Exception e) {   
  199.            ///   
  200.          }finally   
  201.          {   
  202.             ftp.closeServer();   
  203.          }   
  204.        }  
  205.       //在ftp服务器上穿件文件夹  
  206.         public boolean createDir(String path) throws Exception{  
  207.               
  208.             //进入到home文件夹下  
  209.             ftpClient.cd("/home");  
  210.             //创建远程文件夹   
  211.             //远程命令包括  
  212.             //USER    PORT    RETR    ALLO    DELE    SITE    XMKD    CDUP    FEAT<br>  
  213. //          PASS    PASV    STOR    REST    CWD     STAT    RMD     XCUP    OPTS<br>  
  214. //          ACCT    TYPE    APPE    RNFR    XCWD    HELP    XRMD    STOU    AUTH<br>  
  215. //          REIN    STRU    SMNT    RNTO    LIST    NOOP    PWD     SIZE    PBSZ<br>  
  216. //          QUIT    MODE    SYST    ABOR    NLST    MKD     XPWD    MDTM    PROT<br>  
  217. //               在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n<br>  
  218. //                    ftpclient.sendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令<br>  
  219. //                    ftpclient.readServerResponse一定要在sendServer后调用<br>  
  220. //                    nameList("/test")获取指目录下的文件列表<br>  
  221. //                    XMKD建立目录,当目录存在的情况下再次创建目录时报错<br>  
  222. //                    XRMD删除目录<br>  
  223. //                    DELE删除文件<br>  
  224.             //通过远程命令 穿件一个files文件夹  
  225.             ftpClient.sendServer("MKD "+ path + "/r/n");  
  226.             //这个方法必须在 这两个方法中间调用 否则 命令不管用  
  227.             ftpClient.binary();  
  228.             ftpClient.readServerResponse();  
  229.               
  230.             return false;  
  231.         }  
  232.     }  
  233.       
  234.   
  235.     
展开阅读全文

没有更多推荐了,返回首页