如何使用InputStream从ZIP读取文件?

我必须使用SFTP从ZIP存档(只有一个文件,我知道它的名称)中获取文件内容。我唯一拥有的是ZIP的InputStream。大多数示例说明如何使用以下语句获取内容:

ZipFile zipFile = new ZipFile("location");

但是正如我所说,我的本地计算机上没有ZIP文件,也不想下载它。是InputStream够看了?

这是我的方法:

import java.util.zip.ZipInputStream;

import com.jcraft.jsch.Channel;

import com.jcraft.jsch.ChannelSftp;

import com.jcraft.jsch.JSch;

import com.jcraft.jsch.Session;

public class SFTP {

public static void main(String[] args) {

String SFTPHOST = "host";

int SFTPPORT = 3232;

String SFTPUSER = "user";

String SFTPPASS = "mypass";

String SFTPWORKINGDIR = "/dir/work";

Session session = null;

Channel channel = null;

ChannelSftp channelSftp = null;

try {

JSch jsch = new JSch();

session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT);

session.setPassword(SFTPPASS);

java.util.Properties config = new java.util.Properties();

config.put("StrictHostKeyChecking", "no");

session.setConfig(config);

session.connect();

channel = session.openChannel("sftp");

channel.connect();

channelSftp = (ChannelSftp) channel;

channelSftp.cd(SFTPWORKINGDIR);

ZipInputStream stream = new ZipInputStream(channelSftp.get("file.zip"));

ZipEntry entry = zipStream.getNextEntry();

System.out.println(entry.getName); //Yes, I got its name, now I need to get content

} catch (Exception ex) {

ex.printStackTrace();

} finally {

session.disconnect();

channelSftp.disconnect();

channel.disconnect();

}

}

}

回答:

好吧,我已经做到了:

 zipStream = new ZipInputStream(channelSftp.get("Port_Increment_201405261400_2251.zip"));

zipStream.getNextEntry();

sc = new Scanner(zipStream);

while (sc.hasNextLine()) {

System.out.println(sc.nextLine());

}

它可以帮助我阅读ZIP的内容而无需写入另一个文件。

以上是 如何使用InputStream从ZIP读取文件? 的全部内容, 来源链接: utcz.com/qa/431435.html

回到顶部