Java利用apache ftp工具实现文件上传下载和删除功能
利用apacheftp工具实现文件的上传下载和删除,具体如下
1、下载相应的jar包
commons-net-1.4.1.jar
2、实现代码如下:
publicclassFtpUtils{ //ftp服务器地址 publicStringhostname="192.168.1.249"; //ftp服务器端口号默认为21 publicIntegerport=21; //ftp登录账号 publicStringusername="root"; //ftp登录密码 publicStringpassword="123"; publicFTPClientftpClient=null; /** *初始化ftp服务器 */ publicvoidinitFtpClient(){ ftpClient=newFTPClient(); ftpClient.setControlEncoding("utf-8"); try{ System.out.println("connecting...ftp服务器:"+this.hostname+":"+this.port); ftpClient.connect(hostname,port);//连接ftp服务器 ftpClient.login(username,password);//登录ftp服务器 intreplyCode=ftpClient.getReplyCode();//是否成功登录服务器 if(!FTPReply.isPositiveCompletion(replyCode)){ System.out.println("connectfailed...ftp服务器:"+this.hostname+":"+this.port); } System.out.println("connectsuccessfu...ftp服务器:"+this.hostname+":"+this.port); }catch(MalformedURLExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } /** *上传文件 *@parampathnameftp服务保存地址 *@paramfileName上传到ftp的文件名 *@paramoriginfilename待上传文件的名称(绝对地址)* *@return */ publicbooleanuploadFile(Stringpathname,StringfileName,Stringoriginfilename){ booleanflag=false; InputStreaminputStream=null; try{ System.out.println("开始上传文件"); inputStream=newFileInputStream(newFile(originfilename)); initFtpClient(); ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE); CreateDirecroty(pathname); ftpClient.makeDirectory(pathname); ftpClient.changeWorkingDirectory(pathname); ftpClient.storeFile(fileName,inputStream); inputStream.close(); ftpClient.logout(); flag=true; System.out.println("上传文件成功"); }catch(Exceptione){ System.out.println("上传文件失败"); e.printStackTrace(); }finally{ if(ftpClient.isConnected()){ try{ ftpClient.disconnect(); }catch(IOExceptione){ e.printStackTrace(); } } if(null!=inputStream){ try{ inputStream.close(); }catch(IOExceptione){ e.printStackTrace(); } } } returntrue; } /** *上传文件 *@parampathnameftp服务保存地址 *@paramfileName上传到ftp的文件名 *@paraminputStream输入文件流 *@return */ publicbooleanuploadFile(Stringpathname,StringfileName,InputStreaminputStream){ booleanflag=false; try{ System.out.println("开始上传文件"); initFtpClient(); ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE); CreateDirecroty(pathname); ftpClient.makeDirectory(pathname); ftpClient.changeWorkingDirectory(pathname); ftpClient.storeFile(fileName,inputStream); inputStream.close(); ftpClient.logout(); flag=true; System.out.println("上传文件成功"); }catch(Exceptione){ System.out.println("上传文件失败"); e.printStackTrace(); }finally{ if(ftpClient.isConnected()){ try{ ftpClient.disconnect(); }catch(IOExceptione){ e.printStackTrace(); } } if(null!=inputStream){ try{ inputStream.close(); }catch(IOExceptione){ e.printStackTrace(); } } } returntrue; } //改变目录路径 publicbooleanchangeWorkingDirectory(Stringdirectory){ booleanflag=true; try{ flag=ftpClient.changeWorkingDirectory(directory); if(flag){ System.out.println("进入文件夹"+directory+"成功!"); }else{ System.out.println("进入文件夹"+directory+"失败!开始创建文件夹"); } }catch(IOExceptionioe){ ioe.printStackTrace(); } returnflag; } //创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建 publicbooleanCreateDirecroty(Stringremote)throwsIOException{ booleansuccess=true; Stringdirectory=remote+"/"; //如果远程目录不存在,则递归创建远程服务器目录 if(!directory.equalsIgnoreCase("/")&&!changeWorkingDirectory(newString(directory))){ intstart=0; intend=0; if(directory.startsWith("/")){ start=1; }else{ start=0; } end=directory.indexOf("/",start); Stringpath=""; Stringpaths=""; while(true){ StringsubDirectory=newString(remote.substring(start,end).getBytes("GBK"),"iso-8859-1"); path=path+"/"+subDirectory; if(!existFile(path)){ if(makeDirectory(subDirectory)){ changeWorkingDirectory(subDirectory); }else{ System.out.println("创建目录["+subDirectory+"]失败"); changeWorkingDirectory(subDirectory); } }else{ changeWorkingDirectory(subDirectory); } paths=paths+"/"+subDirectory; start=end+1; end=directory.indexOf("/",start); //检查所有目录是否创建完毕 if(end<=start){ break; } } } returnsuccess; } //判断ftp服务器文件是否存在 publicbooleanexistFile(Stringpath)throwsIOException{ booleanflag=false; FTPFile[]ftpFileArr=ftpClient.listFiles(path); if(ftpFileArr.length>0){ flag=true; } returnflag; } //创建目录 publicbooleanmakeDirectory(Stringdir){ booleanflag=true; try{ flag=ftpClient.makeDirectory(dir); if(flag){ System.out.println("创建文件夹"+dir+"成功!"); }else{ System.out.println("创建文件夹"+dir+"失败!"); } }catch(Exceptione){ e.printStackTrace(); } returnflag; } /***下载文件* *@parampathnameFTP服务器文件目录* *@paramfilename文件名称* *@paramlocalpath下载后的文件路径* *@return*/ publicbooleandownloadFile(Stringpathname,Stringfilename,Stringlocalpath){ booleanflag=false; OutputStreamos=null; try{ System.out.println("开始下载文件"); initFtpClient(); //切换FTP目录 ftpClient.changeWorkingDirectory(pathname); FTPFile[]ftpFiles=ftpClient.listFiles(); for(FTPFilefile:ftpFiles){ if(filename.equalsIgnoreCase(file.getName())){ FilelocalFile=newFile(localpath+"/"+file.getName()); os=newFileOutputStream(localFile); ftpClient.retrieveFile(file.getName(),os); os.close(); } } ftpClient.logout(); flag=true; System.out.println("下载文件成功"); }catch(Exceptione){ System.out.println("下载文件失败"); e.printStackTrace(); }finally{ if(ftpClient.isConnected()){ try{ ftpClient.disconnect(); }catch(IOExceptione){ e.printStackTrace(); } } if(null!=os){ try{ os.close(); }catch(IOExceptione){ e.printStackTrace(); } } } returnflag; } /***删除文件* *@parampathnameFTP服务器保存目录* *@paramfilename要删除的文件名称* *@return*/ publicbooleandeleteFile(Stringpathname,Stringfilename){ booleanflag=false; try{ System.out.println("开始删除文件"); initFtpClient(); //切换FTP目录 ftpClient.changeWorkingDirectory(pathname); ftpClient.dele(filename); ftpClient.logout(); flag=true; System.out.println("删除文件成功"); }catch(Exceptione){ System.out.println("删除文件失败"); e.printStackTrace(); }finally{ if(ftpClient.isConnected()){ try{ ftpClient.disconnect(); }catch(IOExceptione){ e.printStackTrace(); } } } returnflag; } publicstaticvoidmain(String[]args){ FtpUtilsftp=newFtpUtils(); //ftp.uploadFile("ftpFile/data","123.docx","E://123.docx"); //ftp.downloadFile("ftpFile/data","123.docx","F://"); ftp.deleteFile("ftpFile/data","123.docx"); System.out.println("ok"); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。