java sftp_Java 实现SFTP上传下载

本文档提供了一个Java实现SFTP上传、下载、查看和删除文件的工具类。通过JSch库连接到SFTP服务器,进行文件操作。包括获取Session、建立SFTP连接、上传文件、下载文件、列出目录文件列表以及删除文件的方法。
摘要由CSDN通过智能技术生成

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.ArrayList;

import java.util.List;

import java.util.ListIterator;

import java.util.Properties;

import com.jcraft.jsch.Channel;

import com.jcraft.jsch.ChannelSftp;

import com.jcraft.jsch.JSch;

import com.jcraft.jsch.Session;

/**

* SFTP工具类

*/

public class UDFile {

static Session sshSession = null;

/**

* 获取ChannelSftp

*/

public static ChannelSftp getConnectIP(String host, String sOnlineSftpPort, String username, String password) {

int port = 0;

if (!("".equals(sOnlineSftpPort)) && null != sOnlineSftpPort) {

port = Integer.parseInt(sOnlineSftpPort);

}

ChannelSftp sftp = null;

try {

JSch jsch = new JSch();

jsch.getSession(username, host, port);

sshSession = jsch.getSession(username, host, port);

sshSession.setPassword(password);

Properties sshConfig = new Properties();

sshConfig.put("StrictHostKeyChecking", "no");

sshSession.setConfig(sshConfig);

sshSession.connect();

Channel channel = sshSession.openChannel("sftp");

channel.connect();

sftp = (ChannelSftp) channel;

} catch (Exception e) {

e.printStackTrace();

}

return sftp;

}

/**

* 上传

*/

public static void upload(String directory, String uploadFile, ChannelSftp sftp) {

try {

sftp.cd(directory);

File file = new File(uploadFile);

sftp.put(new FileInputStream(file), file.getName());

} catch (Exception e) {

e.printStackTrace();

} finally {

if (sftp.isConnected()) {

sshSession.disconnect();

sftp.disconnect();

}

}

}

/**

* 下载

*/

public static void download(String directory, String downloadFile, String saveFile, ChannelSftp sftp) {

try {

sftp.cd(directory);

File file = new File(saveFile);

sftp.get(downloadFile, new FileOutputStream(file));

} catch (Exception e) {

e.printStackTrace();

} finally {

if (sftp.isConnected()) {

sshSession.disconnect();

sftp.disconnect();

}

}

}

/**

* 查看

*/

public static List check(String directory, ChannelSftp sftp) {

List fileList = new ArrayList<>();

try {

sftp.cd(directory);

ListIterator a = sftp.ls(directory).listIterator();

while (a.hasNext()) {

fileList.add((String) a.next());

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if (sftp.isConnected()) {

sshSession.disconnect();

sftp.disconnect();

}

}

return fileList;

}

/**

* 删除

*/

public static void delete(String directory, String deleteFile, ChannelSftp sftp) {

try {

sftp.cd(directory);

sftp.rm(deleteFile);

} catch (Exception e) {

e.printStackTrace();

} finally {

if (sftp.isConnected()) {

sshSession.disconnect();

sftp.disconnect();

}

}

}

public static void main(String[] args) {

ChannelSftp ftp = getConnectIP("127.0.0.1", "22", "", "");

check("", ftp);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值