本文主要讲sftp对linux服务器的文件和文件夹进行操作,windows server 服务器不支持。
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>
分享到:
相关推荐
Linux服务器是一种基于Linux操作系统并提供网络服务的计算机系统,而Java作为一种跨平台的编程语言,能够通过SSH(Secure Shell)协议与Linux服务器进行通信。SSH是一种安全的网络协议,用于在网络中传输命令和数据...
4. 在Java中,通过JSch库连接到SFTP服务器时,需要先建立一个JSch对象,然后创建一个Session(会话),并设置Session的配置属性。 5. 接着通过Session对象获取一个Channel(通道),并打开SFTP通道。此时可以利用...
1. **Java SFTP库**:如JSch(Java Secure Channel)库,它提供了对SSH和SFTP的支持,用于建立与远程服务器的连接,进行文件上传和下载操作。 2. **文件监控**:Java中可以使用`java.nio.file`包中的`WatchService`...
JSch是Java的一个开源库,提供了SSH2协议的实现,允许我们通过SSH连接执行命令、传输文件等操作。在项目中引入JSch库后,我们就可以开始编写代码了。 1. **建立SSH连接** 在Java中,我们需要创建一个`JSch`实例,...
在Java编程环境中,有时我们需要在Windows系统中远程访问Linux服务器以获取或操作文件。`JSch`库提供了一个这样的解决方案,它是一个纯Java实现的SSH2库,允许开发者连接到远程计算机并执行命令,传输文件等。本篇将...
对于Linux服务器,OpenSSH是最常见的选择。下载WinSCP安装包,完成安装后,启动程序,首次使用需要配置会话信息,包括主机名、端口号(默认22)、用户名和密码或密钥对。 ### 三、文件管理操作 1. **上传/下载**:...
Java实现上传文件到服务器指定目录的方法 Java是一种广泛应用于Web开发的编程语言,而上传文件到服务器指定目录是Java Web开发中的一项常见任务。本文将详细介绍如何使用Java实现上传文件到服务器指定目录,并提供...
此外,为了实现真正的两台服务器间的文件复制,客户端和服务器的IP地址需要根据实际情况进行修改。 此方法虽然简单,但仅适用于小文件传输。对于大文件,可能需要考虑使用分块传输、断点续传等技术来提高效率和稳定...
Linux与Windows文件传输工具FlashFXP是一款强大的FTP客户端软件,它允许用户在不同的操作系统之间方便地进行文件交换。...通过熟悉其功能和操作流程,用户可以在Linux和Windows之间轻松地进行文件管理和共享。
6. 上传安装介质:将JDK和Hadoop的安装包上传到服务器上,可以通过SFTP等工具进行上传。 7. 安装JDK并配置环境变量:安装Java开发工具包(JDK)是运行Hadoop集群的先决条件。需要配置JAVA_HOME环境变量,确保JDK能...
Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...
2. **修改Linux服务器环境变量**: 如果FTP服务器是Linux系统,可以尝试修改服务器的LC_ALL和LANG环境变量,设置为支持中文的编码,如GBK或UTF-8。例如: ```bash export LC_ALL="zh_CN.GBK" export LANG="zh_...
在Xftp6中,Linux作为目标系统,可以方便地进行文件上传和下载,支持Linux服务器的管理和维护。 Java是一种跨平台的编程语言,特别适合于分布式计算和企业级应用。在Linux环境中,Java可以作为开发工具或者运行环境...
Xftp是一个功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 以后,MS Windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。Xftp 能同时适应初级用户和高级用户的需要。它采用了标准的 Windows 风格的...
建议两个都安装在同一个 java 文件夹中的不同文件夹中。 2. JDK 环境变量配置 安装完 JDK 后配置环境变量,在[计算机]→[属性]→[高级系统设置]→[高级]→[环境变量]中: ① 系统变量→新建 JAVA_HOME 变量,变量...
总之,Xshell6和Xftp是Linux远程管理的强大工具,它们的配合使用使得远程操作Linux服务器变得简单且高效。无论你是初学者还是经验丰富的IT专业人士,这两款工具都能帮助你更好地完成工作任务,提升工作效率。在日常...
通过Xshell,用户可以在本地计算机上与远程Linux或Unix服务器进行交互,执行命令行操作,如文件管理、系统管理等。Xftp则是一款FTP/SFTP客户端,可以方便地在本地和远程服务器之间进行文件的上传和下载。 首先,...
3. **拖放操作**:用户可以直接通过鼠标将文件或文件夹在本地和远程之间拖动,实现快速传输。 4. **批量传输**:可以一次性选择多个文件或整个目录进行上传或下载,提高了工作效率。 5. **权限管理**:用户可以在...
Electerm 是一款基于 Electron 开发的 SSH/SFTP 客户端,支持 Linux、MAC、Windows 操作系统,开源免费。Electerm 的优点是界面简洁、易于使用,支持多种协议,包括 SSH、SFTP、Telnet 等。Electerm 还支持多种语言...