java怎么解压sftp的文件_java使用sftp与linux之间进行文件传输解压

这篇博客介绍了如何使用Java的JSch库通过SFTP协议进行文件操作,包括上传、下载、删除文件,创建文件夹,以及远程解压缩文件。文章还提供了详细代码示例,特别强调了SFTP与FTP的区别,以及SFTP在安全性上的优势。
摘要由CSDN通过智能技术生成

最近有个需求是上传一个压缩包到服务器并实现解压缩,网上找了几个使用ftp上传的例子但是没有实现,各方面总结加上自己的理解编写,最后使用sftp进行涉及,最后实现了文件的上传、下载、删除、解压缩以及文件夹的创建。特此记录下一下,以便不时之需。

1.简单了解 ftp和sftp的区别

在linux系统中,最长使用到的文件传输的方式莫过于ftp和sftp.

FTP(File Transfer Protocol),即文件传输协议,用于Internet上控制文件的双向传输。

FTP在linux系统中,传输默认的端口为21端口,通常以ASCII码和二进制的方式传输数据,支持主动模式和被动模式两种方式。

但Linux默认是不提供ftp的,需要你额外安装FTP服务器。

SFTP(Secure File Transfer Protocol),即文件加密传输协议,

SFTP在linux系统中,传输默认的端口为22端口,这种传输方式更为安全,传输双方既要进行密码安全验证,还要进行基于密钥的安全验证,有效的防止了“中间人”的威胁和攻击。

在使用linux的centos服务器系统中,两个比较起来,ftp传输会比sftp传输速率快,毕竟sftp牺牲了一定的效率,以保证传输过程的安全。

2.简单了解ChannelSftp类

ChannelSftp类是JSch实现SFTP核心类,它包含了所有SFTP的方法,如:

put(): 文件上传

get(): 文件下载

cd(): 进入指定目录

ls(): 得到指定目录下的文件列表

rename(): 重命名指定文件或目录

rm(): 删除指定文件

mkdir(): 创建目录

rmdir(): 删除目录

还有很多方法,有需要去看源码

2.代码

直接贴代码,里面有注释

SFTPInfo

linux的环境参数

package cn.xgs.file2linux;

/**

* @version: 1.0

* @Description:文件上传的环境配置

* @author: zshuai

* @date: 2019年4月9日

*/

public class SFTPInfo {

public static final String SFTP_REQ_HOST = "192.168.189.138"; //ip

public static final String SFTP_REQ_USERNAME = "root"; //username

public static final String SFTP_REQ_PASSWORD = "rootzs"; //password

public static final int SFTP_DEFAULT_PORT = 22; //端口

}

SFTPUtil

package cn.xgs.file2linux;

import java.io.File;

import java.io.FileInputStream;

import java.util.ArrayList;

import java.util.List;

import java.util.Properties;

import java.util.Vector;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import com.jcraft.jsch.Channel;

import com.jcraft.jsch.ChannelSftp;

import com.jcraft.jsch.ChannelSftp.LsEntry;

import com.jcraft.jsch.JSch;

import com.jcraft.jsch.JSchException;

import com.jcraft.jsch.Session;

import com.jcraft.jsch.SftpException;

import com.opensymphony.xwork2.util.finder.ClassFinder.Info;

/**

* @version: 1.0

* @Description:文件上传/删除/解压缩

* @author: zshuai

* @date: 2019年4月9日

*/

public class SFTPUtil {

private static final Logger LOG = LoggerFactory.getLogger(SFTPUtil.class);

/*

* @Description: 获取文件上传的安全通道

* @param session

* @return

*/

public static Channel getChannel(Session session) {

Channel channel = null;

try {

channel = session.openChannel("sftp");

channel.connect();

根据引用\[1\]和引用\[2\],可以看出在SftpUtil类中,有关于ftp下载文件失败和ftp目录或者文件异常的异常处理。这说明SftpUtil类可能是用于处理SFTP文件传输的工具类。而根据引用\[3\],在业务中经常需要实现上传和下载功能,所以掌握基本的fileUpload技能是必不可少的。因此,对于SFTP下载文件解压,可以按照以下步骤进行操作: 1. 首先,需要使用SftpUtil类中的方法连接到SFTP服务器。 2. 然后,使用SftpUtil类中的方法下载需要的文件到本地。 3. 下载完成后,可以使用解压工具(如Java中的ZipInputStream或Apache Commons Compress库)对下载文件进行解压操作。 4. 解压完成后,可以对解压后的文件进行进一步处理,如读取文件内容或将文件移动到指定位置。 需要注意的是,具体的实现步骤可能会因为使用SftpUtil类的不同而有所差异。因此,在实际操作中,可以根据具体的需求和使用的工具类进行相应的调整和修改。 #### 引用[.reference_title] - *1* *2* *3* [Java实现Sftp下载文件功能](https://blog.csdn.net/weixin_31630667/article/details/115537481)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值