JAVA sftp單個文件上傳

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Properties;

/**
 * @oauth: qiangSW
 * @date: 2020/5/19 8:52
 * @description: com.integral.test
 * @doc:
 */
public class SFTPConneaction {

    /*遠程機 登錄信息*/
    private static final String userName = "root";
    private static final String passWord = "SXDXyfzx_FTP123";
    private static final String url = "127.0.0.1";
    private static final int port = 22;

    /*遠程機目錄*/
    private static final String remoteDirectory = "/home/ftpdata/yfpd";
    /*本地機目錄*/
    private static final String localDirectory = "/etl/CRMBCC/othersystem/yingfu/zhangshangzhuangwei";
    /*文件移動目錄*/
    private static final String directoryHis = "/etl/CRMBCC/othersystem/yingfu/zhangshangzhuangwei_his";

    private static Session session;

    private static ChannelSftp sftp;

    public static void main(String[] args) {
        String priFileName = "yxd_day_";
        StringBuffer fileName = new StringBuffer(priFileName);
        String yyyyMMdd = DateTimeFormatter.ofPattern("yyyyMMdd").format(LocalDateTime.now());
        fileName.append(yyyyMMdd).append(".txt");
        File file = new File(localDirectory);
        File[] files = file.listFiles();
        File getFile = null;
        for (File each : files) {
            /*匹配上傳得文件*/
            if (fileName.toString().equals(each.getName())) {
                getFile = each;
            }
        }
        String yyyyMMddHHmmss = DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now());
        StringBuffer newFile = new StringBuffer(priFileName);
        newFile.append(yyyyMMddHHmmss).append(".txt");
        if (null != getFile) {
            /*空文件直接移動其他目錄*/
            if (getFile.length() == 0) {

                getFile.renameTo(new File(directoryHis, newFile.toString()));
                return;
            }
            InputStream inputStream = null;
            try {
                conectionSftp();
                sftp.cd(remoteDirectory);
                inputStream = new FileInputStream(getFile);
                int i = 1 - 4;
                sftp.put(inputStream, getFile.getName());
                closeSftp();
                inputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (null != inputStream) {
                    try {
                        /* 這個位置必須 關閉要關閉 不然無法將文件 一定到其他目錄*/
                        inputStream.close();
                    } catch (Exception e) {
                        throw new RuntimeException("inputStream close fial", e);
                    }
                }
            }
            /*移動文件*/
            if (getFile.exists()) {
                boolean b = getFile.renameTo(new File(directoryHis, newFile.toString()));
                if (b) {
                    System.out.println("文件移動成功");
                } else {
                    System.out.println("文件移動失敗");
                }
            }

        }

    }

    /*鏈接 sftp*/
    public static void conectionSftp() throws Exception {
        JSch jSch = new JSch();
        session = jSch.getSession(userName, url, port);
        session.setPassword(passWord);
        Properties properties = new Properties();
        properties.setProperty("StrictHostKeyChecking", "no");
        session.setConfig(properties);
        session.connect();
        Channel channel = session.openChannel("sftp");
        channel.connect();
        System.out.println("sftp 鏈接成功");
        sftp = (ChannelSftp) channel;
    }

    /*關閉sftp 目錄*/
    public static void closeSftp() {
        if (null != sftp) {
            if (sftp.isConnected()) {
                sftp.disconnect();
            }
        }
        if (null != session) {
            if (session.isConnected()) {
                session.disconnect();
            }
        }
        System.out.println("sftp 鏈接關閉");
    }
}

maven:

<dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.55</version>
        </dependency>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章