Java利用apache ftp工具实现文件上传下载和删除功能
程序员文章站
2023-12-17 21:42:04
利用apache ftp工具实现文件的上传下载和删除,具体如下
1、下载相应的jar包
commons-net-1.4...
利用apache ftp工具实现文件的上传下载和删除,具体如下
1、下载相应的jar包
commons-net-1.4.1.jar
2、实现代码如下:
public class ftputils { //ftp服务器地址 public string hostname = "192.168.1.249"; //ftp服务器端口号默认为21 public integer port = 21 ; //ftp登录账号 public string username = "root"; //ftp登录密码 public string password = "123"; public ftpclient ftpclient = null; /** * 初始化ftp服务器 */ public void initftpclient() { ftpclient = new ftpclient(); ftpclient.setcontrolencoding("utf-8"); try { system.out.println("connecting...ftp服务器:"+this.hostname+":"+this.port); ftpclient.connect(hostname, port); //连接ftp服务器 ftpclient.login(username, password); //登录ftp服务器 int replycode = ftpclient.getreplycode(); //是否成功登录服务器 if(!ftpreply.ispositivecompletion(replycode)){ system.out.println("connect failed...ftp服务器:"+this.hostname+":"+this.port); } system.out.println("connect successfu...ftp服务器:"+this.hostname+":"+this.port); }catch (malformedurlexception e) { e.printstacktrace(); }catch (ioexception e) { e.printstacktrace(); } } /** * 上传文件 * @param pathname ftp服务保存地址 * @param filename 上传到ftp的文件名 * @param originfilename 待上传文件的名称(绝对地址) * * @return */ public boolean uploadfile( string pathname, string filename,string originfilename){ boolean flag = false; inputstream inputstream = null; try{ system.out.println("开始上传文件"); inputstream = new fileinputstream(new file(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 (exception e) { system.out.println("上传文件失败"); e.printstacktrace(); }finally{ if(ftpclient.isconnected()){ try{ ftpclient.disconnect(); }catch(ioexception e){ e.printstacktrace(); } } if(null != inputstream){ try { inputstream.close(); } catch (ioexception e) { e.printstacktrace(); } } } return true; } /** * 上传文件 * @param pathname ftp服务保存地址 * @param filename 上传到ftp的文件名 * @param inputstream 输入文件流 * @return */ public boolean uploadfile( string pathname, string filename,inputstream inputstream){ boolean flag = 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 (exception e) { system.out.println("上传文件失败"); e.printstacktrace(); }finally{ if(ftpclient.isconnected()){ try{ ftpclient.disconnect(); }catch(ioexception e){ e.printstacktrace(); } } if(null != inputstream){ try { inputstream.close(); } catch (ioexception e) { e.printstacktrace(); } } } return true; } //改变目录路径 public boolean changeworkingdirectory(string directory) { boolean flag = true; try { flag = ftpclient.changeworkingdirectory(directory); if (flag) { system.out.println("进入文件夹" + directory + " 成功!"); } else { system.out.println("进入文件夹" + directory + " 失败!开始创建文件夹"); } } catch (ioexception ioe) { ioe.printstacktrace(); } return flag; } //创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建 public boolean createdirecroty(string remote) throws ioexception { boolean success = true; string directory = remote + "/"; // 如果远程目录不存在,则递归创建远程服务器目录 if (!directory.equalsignorecase("/") && !changeworkingdirectory(new string(directory))) { int start = 0; int end = 0; if (directory.startswith("/")) { start = 1; } else { start = 0; } end = directory.indexof("/", start); string path = ""; string paths = ""; while (true) { string subdirectory = new string(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; } } } return success; } //判断ftp服务器文件是否存在 public boolean existfile(string path) throws ioexception { boolean flag = false; ftpfile[] ftpfilearr = ftpclient.listfiles(path); if (ftpfilearr.length > 0) { flag = true; } return flag; } //创建目录 public boolean makedirectory(string dir) { boolean flag = true; try { flag = ftpclient.makedirectory(dir); if (flag) { system.out.println("创建文件夹" + dir + " 成功!"); } else { system.out.println("创建文件夹" + dir + " 失败!"); } } catch (exception e) { e.printstacktrace(); } return flag; } /** * 下载文件 * * @param pathname ftp服务器文件目录 * * @param filename 文件名称 * * @param localpath 下载后的文件路径 * * @return */ public boolean downloadfile(string pathname, string filename, string localpath){ boolean flag = false; outputstream os=null; try { system.out.println("开始下载文件"); initftpclient(); //切换ftp目录 ftpclient.changeworkingdirectory(pathname); ftpfile[] ftpfiles = ftpclient.listfiles(); for(ftpfile file : ftpfiles){ if(filename.equalsignorecase(file.getname())){ file localfile = new file(localpath + "/" + file.getname()); os = new fileoutputstream(localfile); ftpclient.retrievefile(file.getname(), os); os.close(); } } ftpclient.logout(); flag = true; system.out.println("下载文件成功"); } catch (exception e) { system.out.println("下载文件失败"); e.printstacktrace(); } finally{ if(ftpclient.isconnected()){ try{ ftpclient.disconnect(); }catch(ioexception e){ e.printstacktrace(); } } if(null != os){ try { os.close(); } catch (ioexception e) { e.printstacktrace(); } } } return flag; } /** * 删除文件 * * @param pathname ftp服务器保存目录 * * @param filename 要删除的文件名称 * * @return */ public boolean deletefile(string pathname, string filename){ boolean flag = false; try { system.out.println("开始删除文件"); initftpclient(); //切换ftp目录 ftpclient.changeworkingdirectory(pathname); ftpclient.dele(filename); ftpclient.logout(); flag = true; system.out.println("删除文件成功"); } catch (exception e) { system.out.println("删除文件失败"); e.printstacktrace(); } finally { if(ftpclient.isconnected()){ try{ ftpclient.disconnect(); }catch(ioexception e){ e.printstacktrace(); } } } return flag; } public static void main(string[] args) { ftputils ftp =new ftputils(); //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"); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。