• Java向FTP服务器上传代码工具类


    package com.uisftech.elec.demo.util;

    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPFile;
    import org.apache.commons.net.ftp.FTPReply;
    import java.io.*;
    import java.net.MalformedURLException;

    /**
    * @author lzw
    * @date 2019-06-07
    */
    public class FTPClientUtils {

    public FTPClient ftpClient = null;

    /**
    * 初始化ftp服务器
    */
    public void initFtpClient(String hostName,int port,String userName,String password) {
    ftpClient = new FTPClient();
    ftpClient.setControlEncoding("utf-8");
    try {
    System.out.println("connecting...ftp服务器:"+hostName+":"+port);
    ftpClient.connect(hostName, port); //连接ftp服务器
    ftpClient.enterLocalPassiveMode(); //主动模式
    ftpClient.login(userName, password); //登录ftp服务器
    int replyCode = ftpClient.getReplyCode(); //是否成功登录服务器
    if(!FTPReply.isPositiveCompletion(replyCode)){
    System.out.println("connect failed...ftp服务器:"+hostName+":"+port);
    }
    System.out.println("connect successful...ftp服务器:"+hostName+":"+port);
    }catch (MalformedURLException e) {
    e.printStackTrace();
    }catch (IOException e) {
    e.printStackTrace();
    }
    }

    /**
    * 上传文件
    * @param pathName ftp服务保存地址
    * @param fileName 上传到ftp的文件名
    * @param originFileName 待上传文件的名称(绝对地址) *
    * @return
    */
    public boolean uploadFile( String pathName, String fileName,String originFileName){
    boolean flag = false;
    InputStream inputStream = null;
    try{
    System.out.println("开始上传文件");
    inputStream = new FileInputStream(new File(originFileName));
    ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
    CreateDirectory(pathName);
    ftpClient.makeDirectory(pathName);
    ftpClient.changeWorkingDirectory(pathName);
    ftpClient.storeFile(fileName, inputStream);
    inputStream.close();
    ftpClient.logout();
    flag = true;
    System.out.println("上传文件成功!");
    }catch (Exception e) {
    System.out.println("上传文件失败!");
    e.printStackTrace();
    }finally{
    if(ftpClient.isConnected()){
    try{
    ftpClient.disconnect();
    }catch(IOException e){
    e.printStackTrace();
    }
    }
    if(null != inputStream){
    try {
    inputStream.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    return true;
    }
    /**
    * 上传文件
    * @param pathName ftp服务保存地址
    * @param fileName 上传到ftp的文件名
    * @param inputStream 输入文件流
    * @return
    */
    public boolean uploadFile( String pathName, String fileName,InputStream inputStream){
    boolean flag = false;
    try{
    System.out.println("开始上传文件");
    ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
    CreateDirectory(pathName);
    ftpClient.makeDirectory(pathName);
    ftpClient.changeWorkingDirectory(pathName);
    ftpClient.storeFile(fileName, inputStream);
    inputStream.close();
    ftpClient.logout();
    flag = true;
    System.out.println("上传文件成功!");
    }catch (Exception e) {
    System.out.println("上传文件失败!");
    e.printStackTrace();
    }finally{
    if(ftpClient.isConnected()){
    try{
    ftpClient.disconnect();
    }catch(IOException e){
    e.printStackTrace();
    }
    }
    if(null != inputStream){
    try {
    inputStream.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    return true;
    }
    //改变目录路径
    public boolean changeWorkingDirectory(String directory) {
    boolean flag = true;
    try {
    flag = ftpClient.changeWorkingDirectory(directory);
    if (flag) {
    System.out.println("进入文件夹" + directory + " 成功!");

    } else {
    System.out.println("进入文件夹" + directory + " 失败!开始创建文件夹...");
    }
    } catch (IOException ioe) {
    ioe.printStackTrace();
    }
    return flag;
    }

    //创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建
    public boolean CreateDirectory(String remote) throws IOException {
    boolean success = true;
    String directory = remote + "/";
    // 如果远程目录不存在,则递归创建远程服务器目录
    if (!directory.equalsIgnoreCase("/") && !changeWorkingDirectory(new String(directory))) {
    int start = 0;
    int end = 0;
    if (directory.startsWith("/")) {
    start = 1;
    } else {
    start = 0;
    }
    end = directory.indexOf("/", start);
    String path = "";
    String paths = "";
    while (true) {
    String subDirectory = new String(remote.substring(start, end).getBytes("GBK"), "iso-8859-1");
    path = path + "/" + subDirectory;
    if (!existFile(path)) {
    if (makeDirectory(subDirectory)) {
    changeWorkingDirectory(subDirectory);
    } else {
    System.out.println("创建目录[" + subDirectory + "]失败!");
    changeWorkingDirectory(subDirectory);
    }
    } else {
    changeWorkingDirectory(subDirectory);
    }

    paths = paths + "/" + subDirectory;
    start = end + 1;
    end = directory.indexOf("/", start);
    // 检查所有目录是否创建完毕
    if (end <= start) {
    break;
    }
    }
    }
    return success;
    }

    //判断ftp服务器文件是否存在
    public boolean existFile(String path) throws IOException {
    boolean flag = false;
    FTPFile[] ftpFileArr = ftpClient.listFiles(path);
    if (ftpFileArr.length > 0) {
    flag = true;
    }
    return flag;
    }
    //创建目录
    public boolean makeDirectory(String dir) {
    boolean flag = true;
    try {
    flag = ftpClient.makeDirectory(dir);
    if (flag) {
    System.out.println("创建文件夹" + dir + " 成功!");

    } else {
    System.out.println("创建文件夹" + dir + " 失败!");
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    return flag;
    }

    /**
    * 下载文件
    * @param pathName FTP服务器文件目录 *
    * @param fileName 文件名称 *
    * @param localPath 下载后的文件路径 *
    * @return
    */
    public boolean downloadFile(String pathName, String fileName, String localPath){
    boolean flag = false;
    OutputStream os=null;
    try {
    System.out.println("开始下载文件...");
    //切换FTP目录
    ftpClient.changeWorkingDirectory(pathName);
    FTPFile[] ftpFiles = ftpClient.listFiles();
    for(FTPFile file : ftpFiles){
    if(fileName.equalsIgnoreCase(file.getName())){
    File localFile = new File(localPath + "/" + file.getName());
    os = new FileOutputStream(localFile);
    ftpClient.retrieveFile(file.getName(), os);
    os.close();
    }
    }
    ftpClient.logout();
    flag = true;
    System.out.println("下载文件成功!");
    } catch (Exception e) {
    System.out.println("下载文件失败!");
    e.printStackTrace();
    } finally{
    if(ftpClient.isConnected()){
    try{
    ftpClient.disconnect();
    }catch(IOException e){
    e.printStackTrace();
    }
    }
    if(null != os){
    try {
    os.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    return flag;
    }

    /** * 删除文件 *
    * @param pathName FTP服务器保存目录 *
    * @param fileName 要删除的文件名称 *
    * @return
    */
    public boolean deleteFile(String pathName, String fileName){
    boolean flag = false;
    try {
    System.out.println("开始删除文件...");
    //切换FTP目录
    ftpClient.changeWorkingDirectory(pathName);
    ftpClient.dele(fileName);
    ftpClient.logout();
    flag = true;
    System.out.println("删除文件成功!");
    } catch (Exception e) {
    System.out.println("删除文件失败!");
    e.printStackTrace();
    } finally {
    if(ftpClient.isConnected()){
    try{
    ftpClient.disconnect();
    }catch(IOException e){
    e.printStackTrace();
    }
    }
    }
    return flag;
    }

    public static void main(String[] args) {
    FTPClientUtils ftp =new FTPClientUtils();
    ftp.initFtpClient("172.20.10.11",21,"aseit","12345678");
    //ftp.uploadFile("/images", "xiazi.jpg", "D:/xiazi.jpg");
    ftp.downloadFile("images", "xiazi.jpg", "D://book");
    //ftp.deleteFile("images", "123.jpg");
    //System.out.println("ok");
    }
    }
  • 相关阅读:
    2018常用DOM操作总结
    emlog实现全站pjax无刷新加载页面
    深入理解Vuex 框架
    2018前端最火的web UI框架
    小程序快递单号查询
    表单元素系列二
    表单元素系列一
    表单提交
    AJAX 回调函数刷新页面问题
    electron 常用命令
  • 原文地址:https://www.cnblogs.com/zhiweijq/p/12172285.html
Copyright © 2020-2023  润新知