0%

在FTP上传中巧用static

2018年6月11日 上午12:45

自己再查一查
Java中的static关键字解析 - 海 子 - 博客园

  1. 对于static变量来说,这里是为了读取配置文件中的属性
  2. 对于static方法来说,这里是为了用起来更像是工具,直接用类名操作
    1. 这里巧妙地是static方法中new自己,这不是语法错误
    2. 这也证明了static方法虽然编译的早,但是并不执行,所以不会报错
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      package com.programing.util;

      import lombok.extern.slf4j.Slf4j;
      import org.apache.commons.net.ftp.FTPClient;

      import java.io.File;
      import java.io.FileInputStream;
      import java.io.IOException;
      import java.util.List;

      @Slf4j
      public class FTPUtil {
      private static String /ftpIp/= PropertiesUtil./getProperty/("ftp.server.ip");
      private static String /ftpUser/= PropertiesUtil./getProperty/("ftp.user");
      private static String /ftpPass/= PropertiesUtil./getProperty/("ftp.pass");

      public FTPUtil(String ip,int port,String user,String pwd){
      this.ip = ip;
      this.port = port;
      this.user = user;
      this.pwd = pwd;
      }
      public static boolean uploadFile(List<File> fileList) throws IOException {
      FTPUtil ftpUtil = new FTPUtil(/ftpIp/,21,/ftpUser/,/ftpPass/);
      /log/.info("开始连接ftp服务器");
      boolean result = ftpUtil.uploadFile("img",fileList);
      /log/.info("开始连接ftp服务器,结束上传,上传结果:{}");
      return result;
      }

      private boolean uploadFile(String remotePath,List<File> fileList) throws IOException {
      boolean uploaded = true;
      FileInputStream fis = null;
      //连接FTP服务器
      if(connectServer(this.ip,this.port,this.user,this.pwd)){
      try {
      ftpClient.changeWorkingDirectory(remotePath);
      ftpClient.setBufferSize(1024);
      ftpClient.setControlEncoding("UTF-8");
      ftpClient.setFileType(FTPClient./BINARY_FILE_TYPE/);
      ftpClient.enterLocalPassiveMode();
      for(File fileItem : fileList){
      fis = new FileInputStream(fileItem);
      ftpClient.storeFile(fileItem.getName(),fis);
      }

      } catch (IOException e) {
      /log/.error("上传文件异常",e);
      uploaded = false;
      e.printStackTrace();
      } finally {
      fis.close();
      ftpClient.disconnect();
      }
      }
      return uploaded;
      }

      private boolean connectServer(String ip,int port,String user,String pwd){

      boolean isSuccess = false;
      ftpClient = new FTPClient();
      try {
      ftpClient.connect(ip);
      isSuccess = ftpClient.login(user,pwd);
      } catch (IOException e) {
      /log/.error("连接FTP服务器异常",e);
      }
      return isSuccess;
      }

      private String ip;
      private int port;
      private String user;
      private String pwd;
      private FTPClient ftpClient;

      public String getIp() {
      return ip;
      }

      public void setIp(String ip) {
      this.ip = ip;
      }

      public int getPort() {
      return port;
      }

      public void setPort(int port) {
      this.port = port;
      }

      public String getUser() {
      return user;
      }

      public void setUser(String user) {
      this.user = user;
      }

      public String getPwd() {
      return pwd;
      }

      public void setPwd(String pwd) {
      this.pwd = pwd;
      }

      public FTPClient getFtpClient() {
      return ftpClient;
      }

      public void setFtpClient(FTPClient ftpClient) {
      this.ftpClient = ftpClient;
      }
      }