java通过sftp对linux服务器文件夹进行操作
程序员文章站
2022-05-12 21:08:29
...
本文主要讲sftp对linux服务器的文件和文件夹进行操作,windows server 服务器不支持。
maven依赖
package com.lx.ftp; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.List; import java.util.Properties; import java.util.Vector; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import com.jcraft.jsch.SftpException; public class SftpUtil { /** * * @param host * @param port * @param username * @param password * @return * @throws JSchException */ public ChannelSftp connect(String host, int port, String username,String password) throws JSchException { // 1.声明连接Sftp的通道 ChannelSftp nChannelSftp = null; // 2.实例化JSch JSch nJSch = new JSch(); // 3.获取session Session nSShSession = nJSch.getSession(username, host, port); System.out.println("Session创建成功"); // 4.设置密码 nSShSession.setPassword(password); // 5.实例化Properties Properties nSSHConfig = new Properties(); // 6.设置配置信息 nSSHConfig.put("StrictHostKeyChecking", "no"); // 7.session中设置配置信息 nSShSession.setConfig(nSSHConfig); // 8.session连接 nSShSession.connect(); System.out.println("Session已连接"); // 9.打开sftp通道 Channel channel = nSShSession.openChannel("sftp"); // 10.开始连接 channel.connect(); nChannelSftp = (ChannelSftp) channel; System.out.println("连接到主机" + host + "."); return nChannelSftp; } /** * 文件重命名 * @param directory * @param oldname * @param newname * @param sftp */ public void renameFile(String directory, String oldname, String newname,ChannelSftp sftp) { try { sftp.cd(directory); sftp.rename(oldname, newname); } catch (Exception e) { e.printStackTrace(); } } /** * 上传文件 * @param directory * @param uploadFile * @param sftp */ public 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(); } } /** * 下载文件 * @param directory * @param downloadFile * @param saveFile * @param sftp */ public 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(); } } /** * 删除文件 * @param directory * @param deleteFile * @param sftp */ public void delete(String directory, String deleteFile, ChannelSftp sftp) { try { sftp.cd(directory); sftp.rm(deleteFile); System.out.println("删除成功"); } catch (Exception e) { System.out.println("删除失败"); e.printStackTrace(); } } /** * 列出列表下的文件 * @param directory * @param sftp * @return * @throws SftpException */ public Vector listFiles(String directory, ChannelSftp sftp)throws SftpException { return sftp.ls(directory); } /** * 下载文件夹下面的所有文件 * * @param viDirectory * @param viHost * @param viPort * @param viUserName * @param viPassWord * @param viSaveDir * @return */ public List<String> downloadDirFile(String viDirectory, String viHost,int viPort, String viUserName, String viPassWord, String viSaveDir) { ChannelSftp nChannelSftp = null; List<String> nFileNameList = null; try { // 1.实例化nSftpUtil工具类 SftpUtil nSftpUtil = new SftpUtil(); // 2.建立Sftp通道 nChannelSftp = nSftpUtil.connect(viHost, 22, viUserName, viPassWord); // 3.获取目录下面所有文件 Vector nVector = nChannelSftp.ls(viDirectory); // 4.循环遍历文件 for (int i = 0; i < nVector.size(); i++) { // 5.进入服务器文件夹 nChannelSftp.cd(viDirectory); // 6.实例化文件对象 String nFileName = nVector.get(i).toString().substring(56, nVector.get(i).toString().length()); if (!nFileName.contains("csv")) { continue; } File nFile = new File(viSaveDir + File.separator + nFileName); // 7.下载文件 nChannelSftp.get(nFileName, new FileOutputStream(nFile)); } } catch (Exception e) { e.printStackTrace(); } finally { nChannelSftp.disconnect(); } return nFileNameList; } public static void main(String[] args) throws JSchException { SftpUtil sf = new SftpUtil(); } }
maven依赖
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.54</version> </dependency>
上一篇: Apache ftp tools 图片下载支持中文
下一篇: k均值