• 技术文章 >Java >java教程

    详细介绍Java FTP上传下载删除功能实例代码

    黄舟黄舟2017-03-11 11:57:29原创593
    这篇文章主要介绍了Java FTP上传下载删除功能实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下

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

    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上传下载删除功能实例代码的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:详细介绍Android使用Java8新特性之Lambda expression的示例代码 下一篇:使用Jdom读取XML文件方法
    大前端线上培训班

    相关文章推荐

    • 理解java8中java.util.function.*pojo反射新方法(附代码)• 浅析安卓app和微信授权登录及分享完整对接(代码分享)• 教你一招搞定时序数据库在Spring Boot中的使用• 一招教你使用java快速创建Map(代码分享)• PlayFramework 完整实现一个APP(十一)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网