ftp上传工具类 java_Java对FTP进行上传下载删除操作的工具类

1 importorg.apache.commons.net.ftp.FTPClient;2 importorg.apache.commons.net.ftp.FTPFile;3 importorg.apache.commons.net.ftp.FTPReply;4

5 import java.io.*;6 importjava.net.MalformedURLException;7

8 public classFtpUtils {9   //ftp服务器地址

10   privateString hostName;11   //ftp服务器端口号

12   privateInteger port;13   privateString userName;14   //ftp登录密码

15   privateString password;16

17   private final FTPClient ftpClient = newFTPClient();18

19   /**

20 * 初始化ftp服务器21    */

22   publicFtpUtils(String hostName, Integer port, String userName, String password) {23     this.hostName =hostName;24     this.port =port;25     this.userName =userName;26     this.password =password;27     ftpClient.setControlEncoding("utf-8");28     try{29       System.out.println("connecting...ftp服务器:" + this.hostName + ":" + this.port);30       ftpClient.connect(hostName, port); //连接ftp服务器

31       ftpClient.login(userName, password); //登录ftp服务器

32       int replyCode = ftpClient.getReplyCode(); //是否成功登录服务器

33       if (!FTPReply.isPositiveCompletion(replyCode)) {34         System.out.println("connect failed...ftp服务器:" + this.hostName + ":" + this.port);35 }36       System.out.println("connect successfu...ftp服务器:" + this.hostName + ":" + this.port);37     } catch(MalformedURLException e) {38 e.printStackTrace();39     } catch(IOException e) {40 e.printStackTrace();41 }42 }43

44   /**

45 * 上传文件46 *47 *@parampathName ftp服务保存地址48 *@paramfileName 上传到ftp的文件名49 *@paramoriginfilename 待上传文件的名称(绝对地址) *50 *@return

51    */

52   public booleanuploadFile(String pathName, String fileName, String originfilename) {53     InputStream inputStream = null;54     try{55       inputStream = new FileInputStream(newFile(originfilename));56     } catch(FileNotFoundException e) {57 e.printStackTrace();58 }59     return this.uploadFile(pathName, fileName, inputStream);60 }61

62   /**

63 * 上传文件64 *65 *@parampathName ftp服务保存地址66 *@paramfileName 上传到ftp的文件名67 *@paraminputStream 输入文件流68 *@return

69    */

70   public booleanuploadFile(String pathName, String fileName, InputStream inputStream) {71     boolean flag = false;72     try{73       System.out.println("开始上传文件");74       //initFtpClient();

75 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);76 createDirecroty(pathName);77 ftpClient.makeDirectory(pathName);78 ftpClient.changeWorkingDirectory(pathName);79 ftpClient.storeFile(fileName, inputStream);80 inputStream.close();81 ftpClient.logout();82       flag = true;83       System.out.println("上传文件成功");84     } catch(Exception e) {85       System.out.println("上传文件失败");86 e.printStackTrace();87     } finally{88       this.close(ftpClient, null, inputStream);89 }90     returnflag;91 }92

93   //改变目录路径

94   public booleanchangeWorkingDirectory(String directory) {95     boolean flag = true;96     try{97       flag =ftpClient.changeWorkingDirectory(directory);98       if(flag) {99         System.out.println("进入文件夹" + directory + " 成功!");100       } else{101         System.out.println("进入文件夹" + directory + " 失败!开始创建文件夹");102 }103     } catch(IOException ioe) {104 ioe.printStackTrace();105 }106     returnflag;107 }108

109   //创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建

110   public boolean createDirecroty(String remote) throwsIOException {111     String directory = remote + "/";112     //如果远程目录不存在,则递归创建远程服务器目录

113     if (!directory.equalsIgnoreCase("/") && !changeWorkingDirectory(newString(directory))) {114       int start = 0;115       int end = 0;116       if (directory.startsWith("/")) {117         start = 1;118       } else{119         start = 0;120 }121       end = directory.indexOf("/", start);122       String path = "";123       String paths = "";124       while (true) {125         String subDirectory = new String(remote.substring(start, end).getBytes("GBK"), "iso-8859-1");126         path = path + "/" +subDirectory;127         if (!existFile(path)) {128           if(makeDirectory(subDirectory)) {129 changeWorkingDirectory(subDirectory);130           } else{131             System.out.println("创建目录[" + subDirectory + "]失败");132 changeWorkingDirectory(subDirectory);133 }134         } else{135 changeWorkingDirectory(subDirectory);136 }137         paths = paths + "/" +subDirectory;138         start = end + 1;139         end = directory.indexOf("/", start);140         //检查所有目录是否创建完毕

141         if (end <=start) {142           break;143 }144 }145 }146     return true;147 }148

149   //判断ftp服务器文件是否存在

150   public boolean existFile(String path) throwsIOException {151     boolean flag = false;152 ftpClient.changeWorkingDirectory(path);153     FTPFile[] ftpFileArr =ftpClient.listFiles();154     if (ftpFileArr.length > 0) {155       flag = true;156 }157     returnflag;158 }159

160   //创建目录

161   public booleanmakeDirectory(String dir) {162     boolean flag = true;163     try{164       flag =ftpClient.makeDirectory(dir);165       if(flag) {166         System.out.println("创建文件夹" + dir + " 成功!");167

168       } else{169         System.out.println("创建文件夹" + dir + " 失败!");170 }171     } catch(Exception e) {172 e.printStackTrace();173 }174     returnflag;175 }176

177   /**

178 * 下载文件 *179 *180 *@parampathName FTP服务器文件目录 *181 *@paramfileName 文件名称 *182 *@paramlocalpath 下载后的文件路径 *183 *@return

184    */

185   public booleandownloadFile(String pathName, String fileName, String localpath) {186     boolean flag = false;187     OutputStream os = null;188     try{189       System.out.println("开始下载文件");190       //initFtpClient();191       //切换FTP目录

192 ftpClient.changeWorkingDirectory(pathName);193       FTPFile[] ftpFiles =ftpClient.listFiles();194       for(FTPFile file : ftpFiles) {195         if(fileName.equalsIgnoreCase(file.getName())) {196           //如果该目录下有同名文件,则执行删除操作.

197           if (new File(localpath + "/" +file.getName()).exists()) {198             new File(localpath + "/" +file.getName()).delete();199 }200

201           File localFile = new File(localpath + "/" +file.getName());202           os = newFileOutputStream(localFile);203 ftpClient.retrieveFile(file.getName(), os);204 os.close();205 }206 }207 ftpClient.logout();208       flag = true;209       System.out.println("下载文件成功");210     } catch(Exception e) {211       System.out.println("下载文件失败");212 e.printStackTrace();213     } finally{214

215 }216     returnflag;217 }218

219   /**

220 *@return

221 * @description: 关闭相关流操作方法222 *@exception:223 * @date: 2019/6/17 15:50224 *@version: 1.0225    */

226   private voidclose(FTPClient ftpClient, OutputStream out, InputStream in) {227     if(ftpClient.isConnected()) {228       try{229 ftpClient.disconnect();230       } catch(IOException e) {231 e.printStackTrace();232 }233 }234     if (null !=out) {235       try{236 out.close();237       } catch(IOException e) {238 e.printStackTrace();239 }240 }241     if (null !=in) {242       try{243 in.close();244       } catch(IOException e) {245 e.printStackTrace();246 }247 }248 }249

250   /**

251 * 删除文件 *252 *253 *@parampathName FTP服务器保存目录 *254 *@paramfileName 要删除的文件名称 *255 *@return

256    */

257   public booleandeleteFile(String pathName, String fileName) {258     boolean flag = false;259     try{260       System.out.println("开始删除文件");261       //initFtpClient();262       //切换FTP目录

263 ftpClient.changeWorkingDirectory(pathName);264 ftpClient.dele(fileName);265 ftpClient.logout();266       flag = true;267       System.out.println("删除文件成功");268     } catch(Exception e) {269       System.out.println("删除文件失败");270 e.printStackTrace();271     } finally{272       this.close(ftpClient, null, null);273 }274     returnflag;275 }276 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值