最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用FTPClient類讀寫FTP

 更新時(shí)間:2017年04月25日 09:02:17   作者:kardelpeng  
這篇文章主要為大家詳細(xì)介紹了Java使用FTPClient類讀寫FTP的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java使用FTPClient類讀寫FTP的具體代碼,供大家參考,具體內(nèi)容如下

1.首先先導(dǎo)入相關(guān)jar包

2.創(chuàng)建一個(gè)連接FTP的工具類FTPUtil.java

package com.metarnet.ftp.util; 
 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.SocketException; 
import java.util.Properties; 
 
import org.apache.commons.net.ftp.FTPClient; 
import org.apache.commons.net.ftp.FTPReply; 
import org.apache.log4j.Logger; 
 
public class FTPUtil { 
  private static Logger logger = Logger.getLogger(FTPUtil.class); 
 
   
   
  /** 
   * 獲取FTPClient對象 
   * @param ftpHost FTP主機(jī)服務(wù)器 
   * @param ftpPassword FTP 登錄密碼 
   * @param ftpUserName FTP登錄用戶名 
   * @param ftpPort FTP端口 默認(rèn)為21 
   * @return 
   */ 
  public static FTPClient getFTPClient(String ftpHost, String ftpPassword, 
      String ftpUserName, int ftpPort) { 
    FTPClient ftpClient = null; 
    try { 
      ftpClient = new FTPClient(); 
      ftpClient.connect(ftpHost, ftpPort);// 連接FTP服務(wù)器 
      ftpClient.login(ftpUserName, ftpPassword);// 登陸FTP服務(wù)器 
      if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { 
        logger.info("未連接到FTP,用戶名或密碼錯(cuò)誤。"); 
        ftpClient.disconnect(); 
      } else { 
        logger.info("FTP連接成功。"); 
      } 
    } catch (SocketException e) { 
      e.printStackTrace(); 
      logger.info("FTP的IP地址可能錯(cuò)誤,請正確配置。"); 
    } catch (IOException e) { 
      e.printStackTrace(); 
      logger.info("FTP的端口錯(cuò)誤,請正確配置。"); 
    } 
    return ftpClient; 
  } 
} 

3.編寫一個(gè)讀取FTP上文件的類ReadFTPFile.java

package com.metarnet.ftp.read; 
 
import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.SocketException; 
 
import org.apache.commons.net.ftp.FTPClient; 
import org.apache.log4j.Logger; 
 
import com.metarnet.ftp.util.FTPUtil; 
 
public class ReadFTPFile { 
  private Logger logger = Logger.getLogger(ReadFTPFile.class); 
 
  /** 
   * 去 服務(wù)器的FTP路徑下上讀取文件 
   * 
   * @param ftpUserName 
   * @param ftpPassword 
   * @param ftpPath 
   * @param FTPServer 
   * @return 
   */ 
  public String readConfigFileForFTP(String ftpUserName, String ftpPassword, 
      String ftpPath, String ftpHost, int ftpPort, String fileName) { 
    StringBuffer resultBuffer = new StringBuffer(); 
    FileInputStream inFile = null; 
    InputStream in = null; 
    FTPClient ftpClient = null; 
    logger.info("開始讀取絕對路徑" + ftpPath + "文件!"); 
    try { 
      ftpClient = FTPUtil.getFTPClient(ftpHost, ftpPassword, ftpUserName, 
          ftpPort); 
      ftpClient.setControlEncoding("UTF-8"); // 中文支持 
      ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 
      ftpClient.enterLocalPassiveMode(); 
      ftpClient.changeWorkingDirectory(ftpPath); 
      in = ftpClient.retrieveFileStream(fileName); 
    } catch (FileNotFoundException e) { 
      logger.error("沒有找到" + ftpPath + "文件"); 
      e.printStackTrace(); 
      return "下載配置文件失敗,請聯(lián)系管理員."; 
    } catch (SocketException e) { 
      logger.error("連接FTP失敗."); 
      e.printStackTrace(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
      logger.error("文件讀取錯(cuò)誤。"); 
      e.printStackTrace(); 
      return "配置文件讀取失敗,請聯(lián)系管理員."; 
    } 
    if (in != null) { 
      BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
      String data = null; 
      try { 
        while ((data = br.readLine()) != null) { 
          resultBuffer.append(data + "\n"); 
        } 
      } catch (IOException e) { 
        logger.error("文件讀取錯(cuò)誤。"); 
        e.printStackTrace(); 
        return "配置文件讀取失敗,請聯(lián)系管理員."; 
      }finally{ 
        try { 
          ftpClient.disconnect(); 
        } catch (IOException e) { 
          e.printStackTrace(); 
        } 
      } 
    }else{ 
      logger.error("in為空,不能讀取。"); 
      return "配置文件讀取失敗,請聯(lián)系管理員."; 
    } 
    return resultBuffer.toString(); 
  } 
} 

4.創(chuàng)建一個(gè)往FTP上寫入文件的類WriteFTPFile.java

package com.metarnet.ftp.write; 
 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStream; 
 
import org.apache.commons.net.ftp.FTPClient; 
import org.apache.commons.net.ftp.FTPFile; 
import org.apache.log4j.Logger; 
 
import com.metarnet.ftp.util.FTPUtil; 
 
public class WriteFTPFile { 
 
  private Logger logger = Logger.getLogger(WriteFTPFile.class); 
 
  /** 
   * 本地上傳文件到FTP服務(wù)器 
   * 
   * @param ftpPath 
   *      遠(yuǎn)程文件路徑FTP 
   * @throws IOException 
   */ 
  public void upload(String ftpPath, String ftpUserName, String ftpPassword, 
      String ftpHost, int ftpPort, String fileContent, 
      String writeTempFielPath) { 
    FTPClient ftpClient = null; 
    logger.info("開始上傳文件到FTP."); 
    try { 
      ftpClient = FTPUtil.getFTPClient(ftpHost, ftpPassword, 
          ftpUserName, ftpPort); 
      // 設(shè)置PassiveMode傳輸 
      ftpClient.enterLocalPassiveMode(); 
      // 設(shè)置以二進(jìn)制流的方式傳輸 
      ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 
      // 對遠(yuǎn)程目錄的處理 
      String remoteFileName = ftpPath; 
      if (ftpPath.contains("/")) { 
        remoteFileName = ftpPath 
            .substring(ftpPath.lastIndexOf("/") + 1); 
      } 
      // FTPFile[] files = ftpClient.listFiles(new 
      // String(remoteFileName)); 
      // 先把文件寫在本地。在上傳到FTP上最后在刪除 
      boolean writeResult = write(remoteFileName, fileContent, 
          writeTempFielPath); 
      if (writeResult) { 
        File f = new File(writeTempFielPath + "/" + remoteFileName); 
        InputStream in = new FileInputStream(f); 
        ftpClient.storeFile(remoteFileName, in); 
        in.close(); 
        logger.info("上傳文件" + remoteFileName + "到FTP成功!"); 
        f.delete(); 
      } else { 
        logger.info("寫文件失敗!"); 
      } 
    } catch (Exception e) { 
      e.printStackTrace(); 
    }finally{ 
      try { 
        ftpClient.disconnect(); 
      } catch (IOException e) { 
        e.printStackTrace(); 
      } 
    } 
  } 
 
  /** 
   * 把配置文件先寫到本地的一個(gè)文件中取 
   * 
   * @param ftpPath 
   * @param str 
   * @return 
   */ 
  public boolean write(String fileName, String fileContext, 
      String writeTempFielPath) { 
    try { 
      logger.info("開始寫配置文件"); 
      File f = new File(writeTempFielPath + "/" + fileName); 
      if(!f.exists()){ 
        if(!f.createNewFile()){ 
          logger.info("文件不存在,創(chuàng)建失敗!"); 
        } 
      } 
      BufferedWriter bw = new BufferedWriter(new FileWriter(f, true)); 
      bw.write(fileContext.replaceAll("\n", "\r\n")); 
      bw.flush(); 
      bw.close(); 
      return true; 
    } catch (Exception e) { 
      logger.error("寫文件沒有成功"); 
      e.printStackTrace(); 
      return false; 
    } 
  } 
} 

5.建立一個(gè)測試類FTPMain.java

package com.metarnet.ftp.main; 
 
import java.io.InputStream; 
import java.util.Properties; 
 
import org.apache.log4j.Logger; 
 
import com.metarnet.ftp.read.ReadFTPFile; 
import com.metarnet.ftp.util.FTPUtil; 
import com.metarnet.ftp.write.WriteFTPFile; 
 
public class FTPMain { 
   
  private static Logger logger = Logger.getLogger(FTPMain.class); 
 
  public static void main(String[] args) { 
    int ftpPort = 0; 
    String ftpUserName = ""; 
    String ftpPassword = ""; 
    String ftpHost = ""; 
    String ftpPath = ""; 
    String writeTempFielPath = ""; 
    try { 
      InputStream in = FTPUtil.class.getClassLoader() 
          .getResourceAsStream("env.properties"); 
      if (in == null) { 
        logger.info("配置文件env.properties讀取失敗"); 
      } else { 
        Properties properties = new Properties(); 
        properties.load(in); 
        ftpUserName = properties.getProperty("ftpUserName"); 
        ftpPassword = properties.getProperty("ftpPassword"); 
        ftpHost = properties.getProperty("ftpHost"); 
        ftpPort = Integer.valueOf(properties.getProperty("ftpPort")) 
            .intValue(); 
        ftpPath = properties.getProperty("ftpPath"); 
        writeTempFielPath = properties.getProperty("writeTempFielPath"); 
         
        ReadFTPFile read = new ReadFTPFile(); 
        String result = read.readConfigFileForFTP(ftpUserName, ftpPassword, ftpPath, ftpHost, ftpPort, "huawei_220.248.192.200.cfg"); 
        System.out.println("讀取配置文件結(jié)果為:" + result); 
         
        WriteFTPFile write = new WriteFTPFile(); 
        ftpPath = ftpPath + "/" + "huawei_220.248.192.200_new1.cfg"; 
        write.upload(ftpPath, ftpUserName, ftpPassword, ftpHost, ftpPort, result, writeTempFielPath); 
      } 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
  } 
} 

最后肯定是執(zhí)行,看最后執(zhí)行結(jié)果,OK步驟已講完。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決SpringBoot項(xiàng)目使用多線程處理任務(wù)時(shí)無法通過@Autowired注入bean問題

    解決SpringBoot項(xiàng)目使用多線程處理任務(wù)時(shí)無法通過@Autowired注入bean問題

    這篇文章主要介紹了SpringBoot項(xiàng)目使用多線程處理任務(wù)時(shí)無法通過@Autowired注入bean問題的解決方法,需要的朋友可以參考下
    2018-09-09
  • 詳解Java從工廠方法模式到 IOC/DI思想

    詳解Java從工廠方法模式到 IOC/DI思想

    工廠方法(Factory Method)模式的意義是定義一個(gè)創(chuàng)建產(chǎn)品對象的工廠接口,將實(shí)際創(chuàng)建工作推遲到子類當(dāng)中。核心工廠類不再負(fù)責(zé)產(chǎn)品的創(chuàng)建,這樣核心類成為一個(gè)抽象工廠角色,僅負(fù)責(zé)具體工廠子類必須實(shí)現(xiàn)的接口。本文將詳細(xì)介紹Java從工廠方法模式到 IOC/DI思想。
    2021-06-06
  • Java詳細(xì)分析講解自動(dòng)裝箱自動(dòng)拆箱與Integer緩存的使用

    Java詳細(xì)分析講解自動(dòng)裝箱自動(dòng)拆箱與Integer緩存的使用

    裝箱就是把基本類型轉(zhuǎn)換成包裝類,拆箱就是把包裝類轉(zhuǎn)換成基本類型,下面這篇文章主要給大家介紹Java中自動(dòng)裝箱、自動(dòng)拆箱與Integer緩存,需要的朋友可以參考下
    2022-04-04
  • MyBatis-Flex實(shí)現(xiàn)多表聯(lián)查(自動(dòng)映射)

    MyBatis-Flex實(shí)現(xiàn)多表聯(lián)查(自動(dòng)映射)

    我們可以輕松的使用 Mybaits-Flex 鏈接任何數(shù)據(jù)庫,本文主要介紹了MyBatis-Flex實(shí)現(xiàn)多表聯(lián)查(自動(dòng)映射),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • Struts2實(shí)現(xiàn)文件上傳功能

    Struts2實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了Struts2實(shí)現(xiàn)文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java實(shí)現(xiàn)的日期處理類完整實(shí)例

    Java實(shí)現(xiàn)的日期處理類完整實(shí)例

    這篇文章主要介紹了Java實(shí)現(xiàn)的日期處理類,結(jié)合完整實(shí)例形式分析了Java針對日期的獲取、運(yùn)算、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • Sentinel 斷路器在Spring Cloud使用詳解

    Sentinel 斷路器在Spring Cloud使用詳解

    Sentinel是阿里巴巴開源的一款微服務(wù)流量控制組件,主要以流量為切入點(diǎn),從流量路由、流量控制、流量整形、熔斷降級、系統(tǒng)自適應(yīng)過載保護(hù)、熱點(diǎn)流量防護(hù)等多個(gè)維度來幫助開發(fā)者保障微服務(wù)的穩(wěn)定性,本文介紹Sentinel 斷路器在Spring Cloud使用,感興趣的朋友一起看看吧
    2025-02-02
  • java swing框架實(shí)現(xiàn)貪吃蛇游戲

    java swing框架實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了java swing框架實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Scheduled如何會(huì)在上次任務(wù)執(zhí)行完才會(huì)執(zhí)行下次任務(wù)

    Scheduled如何會(huì)在上次任務(wù)執(zhí)行完才會(huì)執(zhí)行下次任務(wù)

    這篇文章主要介紹了Scheduled如何會(huì)在上次任務(wù)執(zhí)行完才會(huì)執(zhí)行下次任務(wù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 使用Spring?Security搭建極簡的安全網(wǎng)站教程

    使用Spring?Security搭建極簡的安全網(wǎng)站教程

    這篇文章主要為大家介紹了使用Spring?Security搭建極簡的安全網(wǎng)站教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評論

靖安县| 华池县| 会理县| 买车| 民乐县| 深水埗区| 亳州市| 平遥县| 射洪县| 嵊州市| 五台县| 江口县| 万荣县| 化州市| 赤城县| 邵武市| 黔西| 沁阳市| 城市| 开化县| 武山县| 峨边| 庆安县| 大渡口区| 普兰店市| 襄樊市| 小金县| 称多县| 浙江省| 潍坊市| 康乐县| 谢通门县| 松江区| 杭锦后旗| 上高县| 龙岩市| 广德县| 吴江市| 临西县| 尼勒克县| 望城县|