首页 > 开发 > Java > 正文

Java FTP上传下载删除功能实例代码

2024-07-13 10:05:23
字体:
来源:转载
供稿:网友

在没给大家上完整代码之前先给大家说下注意点:

 FTP上传下载,容易出现乱码,记得转换

package com.yinhai.team.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;import org.apache.commons.net.ftp.FTPReply;public class FavFTPUtil {   /**    * 上传文件(可供Action/Controller层使用)未测试    * @param hostname FTP服务器地址     * @param port FTP服务器端口号    * @param username FTP登录帐号    * @param password FTP登录密码    * @param pathname FTP服务器保存目录    * @param fileName 上传到FTP服务器后的文件名称    * @param inputStream 输入文件流    * @return    */   public static boolean uploadFile(String hostname, int port, String username, String password, String pathname, String fileName, InputStream inputStream){    boolean flag = false;    FTPClient ftpClient = new FTPClient();    ftpClient.setControlEncoding("UTF-8");    try {     //连接FTP服务器     ftpClient.connect(hostname, port);     //登录FTP服务器     ftpClient.login(username, password);     //是否成功登录FTP服务器     int replyCode = ftpClient.getReplyCode();     if(!FTPReply.isPositiveCompletion(replyCode)){      return flag;     }     ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);     ftpClient.makeDirectory(pathname);     ftpClient.changeWorkingDirectory(pathname);     ftpClient.storeFile(fileName, inputStream);     inputStream.close();     ftpClient.logout();     flag = true;    } catch (Exception e) {     e.printStackTrace();    } finally{     if(ftpClient.isConnected()){      try {       ftpClient.disconnect();      } catch (IOException e) {       e.printStackTrace();      }     }    }    return flag;   }   /**    * 上传文件(可对文件进行重命名)未测试    * @param hostname FTP服务器地址    * @param port FTP服务器端口号    * @param username FTP登录帐号    * @param password FTP登录密码    * @param pathname FTP服务器保存目录    * @param filename 上传到FTP服务器后的文件名称    * @param originfilename 待上传文件的名称(绝对地址)    * @return    */   public static boolean uploadFileFromProduction(String hostname, int port, String username, String password, String pathname, String filename, String originfilename){    boolean flag = false;    try {     InputStream inputStream = new FileInputStream(new File(originfilename));     flag = uploadFile(hostname, port, username, password, pathname, filename, inputStream);    } catch (Exception e) {     e.printStackTrace();    }    return flag;   }   /**    * 上传文件(不可以进行文件的重命名操作) 未测试    * @param hostname FTP服务器地址    * @param port FTP服务器端口号    * @param username FTP登录帐号    * @param password FTP登录密码    * @param pathname FTP服务器保存目录    * @param originfilename 待上传文件的名称(绝对地址)    * @return    */   public static boolean uploadFileFromProduction(String hostname, int port, String username, String password, String pathname, String originfilename){    boolean flag = false;    try {     String fileName = new File(originfilename).getName();     InputStream inputStream = new FileInputStream(new File(originfilename));     flag = uploadFile(hostname, port, username, password, pathname, fileName, inputStream);    } catch (Exception e) {     e.printStackTrace();    }    return flag;   }   /**     * 删除文件 未测试    * @param hostname FTP服务器地址    * @param port FTP服务器端口号    * @param username FTP登录帐号    * @param password FTP登录密码    * @param pathname FTP服务器保存目录    * @param filename 要删除的文件名称    * @return    */   public static boolean deleteFile(String hostname, int port, String username, String password, String pathname, String filename){    boolean flag = false;    FTPClient ftpClient = new FTPClient();    try {     //连接FTP服务器     ftpClient.connect(hostname, port);     //登录FTP服务器     ftpClient.login(username, password);     //验证FTP服务器是否登录成功     int replyCode = ftpClient.getReplyCode();     if(!FTPReply.isPositiveCompletion(replyCode)){      return flag;     }     //切换FTP目录     ftpClient.changeWorkingDirectory(pathname);     ftpClient.dele(filename);     ftpClient.logout();     flag = true;    } catch (Exception e) {     e.printStackTrace();    } finally{     if(ftpClient.isConnected()){      try {       ftpClient.logout();      } catch (IOException e) {      }     }    }    return flag;   }   /**    * 下载文件     * @param hostname FTP服务器地址    * @param port FTP服务器端口号    * @param username FTP登录帐号    * @param password FTP登录密码    * @param pathname FTP服务器文件目录    * @param filename 文件名称    * @param localpath 下载后的文件路径    * @return    */  public static boolean downloadFile(String hostname, int port, String username, String password, String pathname, String filename, String localpath){    boolean flag = false;    FTPClient ftpClient = new FTPClient();    try {     //连接FTP服务器     ftpClient.connect(hostname, port);     //登录FTP服务器     ftpClient.login(username, password);     //验证FTP服务器是否登录成功     int replyCode = ftpClient.getReplyCode();     if(!FTPReply.isPositiveCompletion(replyCode)){      return flag;     }     //切换FTP目录     boolean b = ftpClient.changeWorkingDirectory(new String(pathname.getBytes(),"ISO-8859-1"));     System.out.println(b);     FTPFile[] ftpFiles = ftpClient.listFiles();     for(FTPFile file : ftpFiles){       String fName = new String(file.getName().getBytes("iso-8859-1"), "UTF-8");       System.out.println(fName);      if(filename.equalsIgnoreCase(fName)){       File localFile = new File(localpath + "/" + fName);       OutputStream os = new FileOutputStream(localFile);       ftpClient.retrieveFile(file.getName(), os);       os.close();      }     }     ftpClient.logout();     flag = true;    } catch (Exception e) {     e.printStackTrace();    } finally{     if(ftpClient.isConnected()){      try {       ftpClient.logout();      } catch (IOException e) {      }     }    }    return flag;   }}

以上所述是小编给大家介绍的Java FTP上传下载删除功能实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对VeVb武林网网站的支持!


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表