java下载、上传、删除ftp(FTPclient,适用JDK7以及linux下的ftp)
2016-11-07 13:52
639 查看
java下载、上传、删除ftp,使用org.apache.commons.net.ftp.FTPClient采用被动传输,之前使用sun.net.ftp.FtpClient上传(点击打开链接)但在jdk7下使用报错,因此这里使用FTPClient进行FTP操作,能够适用JDK1.7
以及 linux vsftpd的情况。
使用的包为commons-net-1.4.1.jar
以及 linux vsftpd的情况。
使用的包为commons-net-1.4.1.jar
package muyunfei.ftpDemo; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.SocketException; import org.apache.commons.net.ftp.FTPClient; /** * * @author muyunfei 牟云飞 * */ public class FTPUtil { public static void main(String[] args) { FTPUtil util = new FTPUtil(); // //上传 // File localFile=new File("G:\\photo2222222222222.png"); // try { // boolean flag=util.uploadFile(localFile, "muyunfei.png"); // System.out.println(flag +" 判断上传结果"); // } catch (SocketException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } catch (IOException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } //下载 File localFile=new File("G:\\APP-release.apk"); try { localFile.createNewFile(); boolean flag=util.downloadFile("APP-release.apk",localFile); System.out.println(flag +" 判断下载结果"); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //删除 // try { // boolean flag=util.deleteFile("muyunfei.png"); // System.out.println(flag +" 判断删除结果"); // } catch (SocketException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } catch (IOException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } } public static String ftpHost; public static int port; public static String userName; public static String passWord; public static String path; //ftp下哪个目录------------------ public static String ftpEncode; public static int defaultTimeout; /** * 静态块,初始化ftp数据 */ static{ try{ ftpHost = "192.168.21.114";//linux //ftpHost = "192.168.1.103";//windows port = 21; userName = "test"; passWord = "111111"; path = "ev_ftp"; //ftp下哪个目录------------------ ftpEncode="UTF-8"; defaultTimeout = 30000; }catch(Exception e){ e.printStackTrace(); } } /** * 上传ftp * @param localFile * @param fileNewName * @return * @throws SocketException * @throws IOException */ public boolean uploadFile(File localFile,String fileNewName) throws SocketException, IOException{ boolean flag=true; //获得文件流 FileInputStream is=new FileInputStream(localFile); //保存至Ftp FTPClient ftpClient = new FTPClient();// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。 ftpClient.setControlEncoding(ftpEncode); // 中文支持 ftpClient.connect(ftpHost); ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码 ftpClient.setDefaultPort(port); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.enterLocalPassiveMode(); // 用被动模式传输,解决linux服务长时间等待,导致超时问题 ftpClient.setDefaultTimeout(defaultTimeout);// 设置默认超时时间 ftpClient.setBufferSize(1024*1024);//设置缓存区,默认缓冲区大小是1024,也就是1K //切换目录,目录不存在创建目录 boolean chagenDirFlag=ftpClient.changeWorkingDirectory(path); if(chagenDirFlag==false){ ftpClient.makeDirectory(path); ftpClient.changeWorkingDirectory(path); } //生成新的ftp文件名 // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); // Date curDate = new Date(); // String newFileName = fileName.substring(0, fileName.indexOf(".zip"))+sdf.format(curDate)+".zip"; String newFileName = fileNewName; //上传至Ftp flag=ftpClient.storeFile(newFileName, is); is.close(); //关闭连接 ftpClient.logout(); ftpClient.disconnect(); if(true==flag){ System.out.println(fileNewName+"上传图片成功"); }else{ System.out.println(fileNewName+"上传图片失败......."); } System.out.println("FTP文件名——"+newFileName); return flag; } /** * 下载FTP * @param ftpName ftp上的文件名 * @param localFile 保存的本地地址 * @return * @throws SocketException * @throws IOException */ public boolean downloadFile(String ftpName,File localFile) throws SocketException, IOException{ boolean flag=true; //保存至Ftp FTPClient ftpClient = new FTPClient();// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。 ftpClient.setControlEncoding(ftpEncode); // 中文支持 ftpClient.connect(ftpHost); ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码 ftpClient.setDefaultPort(port); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.enterLocalPassiveMode(); // 用被动模式传输,解决linux服务长时间等待,导致超时问题 ftpClient.setDefaultTimeout(defaultTimeout);// 设置默认超时时间 ftpClient.setBufferSize(1024*1024);//设置缓存区,默认缓冲区大小是1024,也就是1K //切换目录,目录不存在创建目录 boolean chagenDirFlag=ftpClient.changeWorkingDirectory(path); if(chagenDirFlag==false){ System.out.println("ftp上目录切换失败"); return false; } OutputStream os = new FileOutputStream(localFile); flag = ftpClient.retrieveFile(ftpName, os); if(true==flag){ System.out.println(ftpName+" 文件下载成功"); }else{ System.out.println(ftpName+" 文件下载失败"); } os.flush(); os.close(); //关闭连接 ftpClient.logout(); ftpClient.disconnect(); System.out.println("FTP文件名——"+ftpName); return flag; } /** * 删除FTP * @param ftpName ftp上的文件名 * @param localFile 保存的本地地址 * @return * @throws SocketException * @throws IOException */ public boolean deleteFile(String ftpName) throws SocketException, IOException{ boolean flag=true; //保存至Ftp FTPClient ftpClient = new FTPClient();// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。 ftpClient.setControlEncoding(ftpEncode); // 中文支持 ftpClient.connect(ftpHost); ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码 ftpClient.setDefaultPort(port); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.enterLocalPassiveMode(); // 用被动模式传输,解决linux服务长时间等待,导致超时问题 ftpClient.setDefaultTimeout(defaultTimeout);// 设置默认超时时间 //切换目录,目录不存在创建目录 boolean chagenDirFlag=ftpClient.changeWorkingDirectory(path); if(chagenDirFlag==false){ System.out.println("ftp上目录切换失败"); return false; } flag = ftpClient.deleteFile(ftpName); if(true==flag){ System.out.println(ftpName+" 文件删除成功"); }else{ System.out.println(ftpName+" 文件删除失败"); } //关闭连接 ftpClient.logout(); ftpClient.disconnect(); System.out.println("FTP文件名——"+ftpName); return flag; } }
相关文章推荐
- Java代码使用FTPClient实现ftp文件上传下载和删除的功能
- Java 使用ftp的方式上传文件到linux,并实现删除,下载
- Java连接FTP服务器,并上传或下载以及删除ftp服务器中的文件
- 实现 ftp 文件/文件夹的上传下载以及删除
- JAVA中使用FTPClient工具类上传下载
- JAVA中使用FTPClient上传下载
- java上传、下载、删除ftp文件
- JAVA中使用FTPClient工具类上传下载
- JAVA中使用FTPClient实现文件上传下载
- JAVA中使用FTPClient上传下载
- JAVA中使用FTPClient上传下载 java利用ftp协议上传文件(by me)
- JAVA中使用FTPClient上传下载
- JAVA中使用FTPClient上传下载
- Java利用Apache的FTPClient包实现FTP的上传与下载
- ftp上传下载 java FTPClient
- JAVA中使用FTPClient实现文件上传下载
- JAVA中使用FTPClient上传下载
- JAVA中使用FTPClient上传下载
- JAVA中使用FTPClient上传下载
- JAVA中使用FTPClient实现文件上传下载