zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java使用ftp上传文件示例分享

JAVA文件上传ftp 使用 示例 分享
2023-06-13 09:15:17 时间

复制代码代码如下:


importjava.io.ByteArrayInputStream; 
importjava.io.FileOutputStream; 
importjava.io.IOException; 
importjava.net.SocketException; 
importjava.text.SimpleDateFormat; 
importjava.util.Date; 

importorg.apache.commons.io.IOUtils; 
importorg.apache.commons.net.ftp.FTPClient; 

/**
 *classname:FTPFileTransmit<BR>
 *classdescription:pleasewriteyourdescription<BR>
 *Remark:<BR>
 *@version1.002011-8-9
 */ 
publicclassFTPFileTransmit{ 

   privateStringftpPath; 
   privateStringftpName; 
   privateStringftpPassword; 
   privateStringftpServerIP; 

   publicFTPFileTransmit(){ 
       this.ftpPath="xxx/xxx/"; 
       this.ftpName="name"; 
       this.ftpPassword="pass"; 
       this.ftpServerIP="192.168.0.xx"; 
   } 

     
   /**
    *Methodname:saveInFTP<BR>
    *Description:把文件存储在FTP上<BR>
    *Remark:<BR>
    *@paramFolderName           示例"xxx/xxx/"
    *@paramFileName             示例"thefilename"
    *@paramdata                 byte[]数组
    *@return boolean<BR>
    */ 
   publicbooleansaveInFTP(StringFolderName,StringFileName,byte[]data){ 
       booleanflag=false; 

       //创建FTP客户端  
       FTPClientftpClient=newFTPClient(); 
       //输入流用于读取文件  
//     FileInputStreamfis=null;  
       ByteArrayInputStreambis=null; 

       try{ 
           //如果FolderName和FileName都不符合基本要求,那么就没有必要进行ftp操作  
           if(FolderName!=null 
                   &&FolderName.compareTo("")!=0 
                   &&FileName!=null 
                   &&FileName.compareTo("")!=0){ 

               //建立FTP连接  
               ftpClient.connect(this.ftpServerIP); 

               //如果登录成功后,才进行创建输入流  
               if(ftpClient.login(this.ftpName,this.ftpPassword)){ 
//                 FilesrcClientFile=newFile("C:/ParseXML.xml");  

                   //实例化输入流  
//                 fis=newFileInputStream(srcClientFile);  

                   if(ftpClient.changeWorkingDirectory(FolderName)){ 
                       //将byte[]写入到输入流中,实例化  
                       bis=newByteArrayInputStream(data); 

                       //设置缓冲  
                       ftpClient.setBufferSize(1024); 

                       //设置文件类型(二进制类型)  
                       if(ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)){ 
                           flag=ftpClient.storeFile(FileName,bis); 
                       } 
                   } 
               } 
           } 
       }catch(SocketExceptione){ 
           e.printStackTrace(); 
           flag=false; 
       }catch(IOExceptione){ 
           e.printStackTrace(); 
           flag=false; 
       }catch(Exceptione){ 
           e.printStackTrace(); 
           flag=false; 
       }finally{ 
           try{ 
               //关闭输入流  
               IOUtils.closeQuietly(bis); 
               //关闭连接  
               ftpClient.disconnect(); 
           }catch(IOExceptione){ 
               e.printStackTrace(); 
           } 
       } 

       returnflag; 
   } 

   /**
    *Methodname:getFromFTP<BR>
    *Description:从FTP上读取文件<BR>
    *Remark:<BR>
    *@return boolean<BR>
    */ 
   publicbooleangetFromFTP(){ 
       booleanflag=false; 

       //创建FTP客户端  
       FTPClientftpClient=newFTPClient(); 
       //输出流用于输出文件  
       FileOutputStreamfos=null; 

       try{ 
           //建立FTP连接  
           ftpClient.connect(this.ftpServerIP); 
           //如果登录成功后,才进行创建输出流  
           if(ftpClient.login(this.ftpName,this.ftpPassword)){ 
               //FTP文件  
               StringdistinationFile="/name/xxx/xxx/xxx文件"; 
               //实例化输出流  
               fos=newFileOutputStream("C:/ParseXML_InFTP.xml"); 

               //设置缓冲  
               ftpClient.setBufferSize(1024); 

               //设置文件类型(二进制类型)  
               if(ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)){ 
                   ftpClient.retrieveFile(distinationFile,fos); 
                   flag=true; 
               } 
           } 
       }catch(SocketExceptione){ 
           e.printStackTrace(); 
           flag=false; 
       }catch(IOExceptione){ 
           e.printStackTrace(); 
           flag=false; 
       }catch(Exceptione){ 
           e.printStackTrace(); 
           flag=false; 
       }finally{ 
           try{ 
               //关闭输出流  
               IOUtils.closeQuietly(fos); 
               //关闭连接  
               ftpClient.disconnect(); 
           }catch(IOExceptione){ 
               e.printStackTrace(); 
           } 
       } 

       returnflag; 
   } 

   publicbooleancreateDirectory(){ 
       booleanflag=false; 

       //创建FTP客户端  
       FTPClientftpClient=newFTPClient(); 

       try{ 
           //建立FTP连接  
           ftpClient.connect(this.ftpServerIP); 
           //如果登录成功后,才进行操作  
           if(ftpClient.login(this.ftpName,this.ftpPassword)){ 

               //切换文件路径,到FTP上的"NNDD3"文件夹下  
               if(this.ftpPath!=null&&this.ftpPath.compareTo("")!=0 
                       &&ftpClient.changeWorkingDirectory(this.ftpPath)){ 
                   SimpleDateFormatf=newSimpleDateFormat("yyyyMMdd"); 
                   Stringtime=f.format(newDate()); 

                   StringFolderName=time+"_ReTransmit"; 
                   ftpClient.makeDirectory(FolderName); 
                   flag=true; 
               } 
           } 
       }catch(SocketExceptione){ 
           e.printStackTrace(); 
           flag=false; 
       }catch(IOExceptione){ 
           e.printStackTrace(); 
           flag=false; 
       }catch(Exceptione){ 
           e.printStackTrace(); 
           flag=false; 
       }finally{ 
           try{ 
               //关闭连接  
               ftpClient.disconnect(); 
           }catch(IOExceptione){ 
               e.printStackTrace(); 
           } 
       } 

       returnflag; 
   } 

   publicString[]getAllFolderNames(){ 
       //创建FTP客户端  
       FTPClientftpClient=newFTPClient(); 

       try{ 
           //建立FTP连接  
           ftpClient.connect(this.ftpServerIP); 

           //如果登录成功后,才进行操作  
           if(ftpClient.login(this.ftpName,this.ftpPassword)){ 

               //切换文件路径,到FTP上的"NNDD3"文件夹下  
               if(this.ftpPath!=null&&this.ftpPath.compareTo("")!=0 
                       &&ftpClient.changeWorkingDirectory(this.ftpPath)){ 
                   //将当前时间减去2天,删除的是前两天的数据包  
                   Stringtime=minusTime(); 

                   String[]allNames=ftpClient.listNames(); 

                   String[]temp=newString[allNames.length]; 
                   //初始化数组  
                   for(intj=0;j<allNames.length;j++){ 
                       temp[j]=""; 
                   } 

                   //找出要删除文件夹的名称  
                   for(inti=0;i<allNames.length;i++){ 
                       if(allNames[i].substring(0,8).compareTo(time)<=0){ 
                           temp[i]=allNames[i]; 
                       } 
                   } 

                   returntemp; 
               } 
           } 
       }catch(SocketExceptione){ 
           e.printStackTrace(); 
       }catch(IOExceptione){ 
           e.printStackTrace(); 
       }finally{ 
           try{ 
               //关闭连接  
               ftpClient.disconnect(); 
           }catch(IOExceptione){ 
               e.printStackTrace(); 
           } 
       } 

       returnnull; 
   } 

   /**
    * 
    *Methodname:minusTime<BR>
    *Description:获取钱两天的时间,如2011-8-1的前两天就是2011-7-30<BR>
    *Remark:<BR>
    *@return String<BR>
    */ 
   privateStringminusTime(){ 
       SimpleDateFormatdf=newSimpleDateFormat("yyyyMMdd");    
       Dated=newDate(); 
       StringtimeMinus2=df.format(newDate(d.getTime()-2*24*60*60*1000));    
       returntimeMinus2; 
   } 

   publicstaticvoidmain(String[]args){ 
       FTPFileTransmitftpFileTransmit=newFTPFileTransmit(); 
       ftpFileTransmit.deleteFoldersInFTP(); 

//     booleanflag=ftpFileTransmit.createDirectory();  
//     if(flag){  
//         System.out.println("******FTP文件夹创建成功******");  
//     }  

//     StringFolderName=ftpFileTransmit.ftpPath+"20110809_ReTransmit/";  
//     byte[]data=newbyte[1024];  
//     for(inti=0;i<data.length;i++){  
//         data[i]="a";  
//     }  
//     booleanflag=ftpFileTransmit.saveInFTP(FolderName,"2011080912345678",data);  
//     if(flag){  
//         System.out.println("******FTP文件夹创建成功******");  
//     }  
   } 
}