java之Jsch实现Linux的文件上传与下载
一、JSch是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。
<dependency> <groupId>jsch</groupId> <artifactId>jsch</artifactId> <version>0.1.8</version> </dependency>
三、sftp的访问,以及实现方式
import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import java.io.*; import java.util.Properties; public class SftpFile { public static void main(String[] args) throws Exception { //声明JSCH对象 JSch jSch = new JSch(); //获取一个Linux会话 Session session = jSch.getSession("root", "10.0.40.98", 22); //设置登录密码 session.setPassword("密码"); //关闭key的检验 Properties sshConfig = new Properties(); sshConfig.put("StrictHostKeyChecking", "no"); session.setConfig(sshConfig); //连接Linux session.connect(); //通过sftp的方式连接 ChannelSftp channel = (ChannelSftp) session.openChannel("sftp"); channel.connect(); //上传文件 File file = new File("d:\\1.txt"); InputStream inputStream = new FileInputStream(file); channel.put(inputStream, "/root/file/2.txt"); //下载文件 OutputStream out = new FileOutputStream("d:\\4.txt"); channel.get("/root/file/1.txt", out); //关闭流 inputStream.close(); out.close(); } }
注意:这里是弄成sftp的方式,其他方式也可以通过这样的方式来实现。
四、Jsch中sftp提供的一些api
put(): 文件上传 get(): 文件下载 cd(): 进入指定目录 ls(): 得到指定目录下的文件列表 rename(): 重命名指定文件或目录 rm(): 删除指定文件 mkdir(): 创建目录 rmdir(): 删除目录