zoukankan      html  css  js  c++  java
  • ftp上传

    package com.br.sftpclient;

    import com.br.sftpUtil.PropertiesUtil;
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPFile;
    import org.apache.commons.net.ftp.FTPReply;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    import org.springframework.util.StringUtils;
    import sun.rmi.runtime.Log;

    import java.io.*;
    import java.net.MalformedURLException;
    import java.util.logging.Logger;

    /**
    * @Company:
    * @Author: shaobin.fu
    * @Date: 2018/12/11 14:27
    * @Description:
    */
    public class UpToFtp2 {
    private transient org.slf4j.Logger log = LoggerFactory.getLogger(this.getClass());

    private FTPClient ftp;

    /**
    * @param path 上传到ftp服务器哪个路径下
    * @param addr 地址
    * @param port 端口号
    * @param username 用户名
    * @param password 密码
    * @return
    * @throws Exception
    */
    public boolean connect(String path, String addr, int port, String username, String password) throws Exception {
    boolean result = false;
    log.info("start connect.....");
    ftp = new FTPClient();
    int reply;
    ftp.connect(addr, port);
    ftp.login(username, password);
    ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
    reply = ftp.getReplyCode();
    if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
    return result;
    }
    log.info("ftp has been connected.....");
    CreateDirecroty(path);
    ftp.changeWorkingDirectory(path);
    result = true;
    return result;
    }
    //改变目录路径
    public boolean changeWorkingDirectory(String directory) {
    boolean flag = true;
    try {
    flag = ftp.changeWorkingDirectory(directory);
    if (flag) {
    log.info("enter " + directory + " success!");

    } else {
    log.info("enter " + directory + " failed!start create directory!");
    }
    } catch (IOException ioe) {
    ioe.printStackTrace();
    }
    return flag;
    }
    //判断ftp服务器文件是否存在
    public boolean existFile(String path) throws IOException {
    boolean flag = false;
    FTPFile[] ftpFileArr = ftp.listFiles(path);
    if (ftpFileArr.length > 0) {
    flag = true;
    }
    return flag;
    }
    //创建目录
    public boolean makeDirectory(String dir) {
    boolean flag = true;
    try {
    flag = ftp.makeDirectory(dir);
    if (flag) {
    log.info("create directory " + dir + " success!");

    } else {
    log.info("create directory " + dir + " failed!");
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    return flag;
    }
    //创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建
    public boolean CreateDirecroty(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 {
    log.info("create directory " + subDirectory + " failed!");
    changeWorkingDirectory(subDirectory);
    }
    } else {
    changeWorkingDirectory(subDirectory);
    }

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

    /**
    * @param file 上传的文件或文件夹
    * @throws Exception
    */
    public void upload(File file) throws Exception {
    log.info("start upload,please waiting....");
    if (file.isDirectory()) {
    log.info("start upload,start upload directory....");
    //ftp.makeDirectory(file.getName());
    CreateDirecroty(file.getName());
    ftp.changeWorkingDirectory(file.getName());
    log.info("current pathname is:{}",file.getPath());
    String[] files = file.list();
    for (int i = 0; i < files.length; i++) {
    log.info("file path:{}",file.getPath());
    File file1 = new File(file.getPath() + "\" + files[i]);
    if (file1.isDirectory()) {
    upload(file1);
    ftp.changeToParentDirectory();
    } else {
    File file2 = new File(file.getPath() + "\" + files[i]);
    FileInputStream input = new FileInputStream(file2);
    ftp.storeFile(file2.getName(), input);
    input.close();
    }
    }
    } else {
    log.info("start upload,start upload file,wait a minute....");
    File file2 = new File(file.getPath());
    FileInputStream input = new FileInputStream(file2);
    ftp.storeFile(file2.getName(), input);
    input.close();
    }
    }

    public static void main(String[] args) throws Exception {
    UpToFtp2 t = new UpToFtp2();
    t.connect("/huadong_fengkong/dir-name/", PropertiesUtil.getStringValue("hostname"), PropertiesUtil.getIntegerValue("port"),
    PropertiesUtil.getStringValue("username"), PropertiesUtil.getStringValue("password"));
    //String pathname = !StringUtils.isEmpty(args[0])?args[0]:PropertiesUtil.getStringValue("txt_path");
    String pathname="E:\opt\SpringCloud";
    File file = new File(pathname);
    t.upload(file);
    }
    }
  • 相关阅读:
    HDU 5313 bitset优化背包
    bzoj 2595 斯坦纳树
    COJ 1287 求匹配串在模式串中出现的次数
    HDU 5381 The sum of gcd
    POJ 1739
    HDU 3377 插头dp
    HDU 1693 二进制表示的简单插头dp
    HDU 5353
    URAL 1519 基础插头DP
    UVA 10294 等价类计数
  • 原文地址:https://www.cnblogs.com/tiger-fu/p/10119503.html
Copyright © 2011-2022 走看看