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

来源:互联网 发布:python和c语言 编辑:程序博客网 时间:2024/05/14 20:20

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();// 实例化一个JFrameJPanel 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);}@Overridepublic void actionPerformed(ActionEvent e) {try {// TODO Auto-generated method stubJFileChooser 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();}}}


1 0
原创粉丝点击