java swing中使用jsch做sftp文件上传

Jsch

JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,也可以集成它的功能到自己的应用程序。

SFTP

SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式。SFTP是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。(来自百度的解释)

要使用JSch,需要下载它的jar包,请从官网下载它:http://www.jcraft.com/jsch/

JSch支持三种文件传输模式:

OVERWRITE 

完全覆盖模式,默认文件传输模式

RESUME

恢复模式,如果文件已经传输一部分,这时由于网络或其他任何原因导致文件传输中断,如果下一次传输相同的文件,则会从上一次中断的地方续传

APPEND
追加模式,如果目标文件已存在,传输的文件将在目标文件后追加

ChannelSftp类是JSch实现SFTP核心类,它包含了所有SFTP的方法,如:
put():      文件上传
get():      文件下载
cd():       进入指定目录
ls():       得到指定目录下的文件列表
rename():   重命名指定文件或目录
rm():       删除指定文件
mkdir():    创建目录
rmdir():    删除目录
这里省略了方法的参数

swing中使用jsch做sftp文件上传

public class FileChooser extends JFrame implements ActionListener {

	/**
	 * jsch 通过sftp上传文件
	 */
	private static final long serialVersionUID = 1L;

	// 初始化参数--------------------------------
	static String url = "162.2.11.190";
	static String username = "root";
	static String password = "cnp200@HW";
	// 初始化参数--------------------------------
	private static ChannelSftp channelSftp;
	JButton open = null;

	public static void main(String[] args) {
		new FileChooser();
	}
	public FileChooser() {
		JFrame jframe = new JFrame();// 实例化一个JFrame
		JPanel jPanel = new JPanel(); // 创建一个轻量级容器
		JToolBar jToolBar = new JToolBar(); // 提供了一个用来显示常用的 Action 或控件的组件
		jframe.setVisible(true);// 可见
		jframe.setSize(500, 500);// 窗体大小
		jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// close的方式
		jframe.setContentPane(jPanel); // 设置 contentPane 属性。
		JLabel jl = new JLabel("请选择:");// 创建一个Label标签
		jl.setHorizontalAlignment(SwingConstants.LEFT);// 样式,让文字居中
		jPanel.add("North", jl);// 将标签添加到容器中
		jPanel.add("North", jToolBar);
		jPanel.add("North", jToolBar);
		open = new JButton("上传文件");// 将上传文件按钮添加到容器中
		open.addActionListener(this);
		jToolBar.add(open);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		try {
			// TODO Auto-generated method stub
			JFileChooser jfc = new JFileChooser();
			jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
			jfc.showDialog(new JLabel(), "选择");
			/** 得到选择的文件* */
			File file2 = jfc.getSelectedFile();
			System.out.println(file2);
			// 1、创建JSch类,好比是FlashFXP工具
			JSch jsch = new JSch();
			// 2、创建本次的文件传输会话对象,并连接到SFTP服务器。它好比是通过FlashFXP工具连接到SFTP服务器
			Session session = jsch.getSession(username, url, 22);
			session.setPassword(password);
			Properties config = new Properties();
			config.put("StrictHostKeyChecking", "no");
			session.setConfig(config);
			session.connect();
			// 3、在该session会话中开启一个SFTP通道,之后就可以在该通道中进行文件传输了
			channelSftp = (ChannelSftp) session.openChannel("sftp");
			channelSftp.connect();

			FileInputStream input = null;
			// 4、进行文件传输操作:put()、get()....
			input = new FileInputStream(file2);
			String dst = "/opt/222.txt";
			channelSftp.put(input, dst, ChannelSftp.OVERWRITE);
			input.close();
		} catch (Exception e2) {
			e2.printStackTrace();
		}

		// 5、操作完毕后,关闭通道并退出本次会话
		if (channelSftp != null && channelSftp.isConnected()) {
			channelSftp.disconnect();
		}

	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值