ฉันต้องรับเนื้อหาไฟล์จากไฟล์ ZIP (ฉันรู้ชื่อไฟล์เดียวเท่านั้น) โดยใช้ SFTP สิ่งเดียวที่ฉันมีคือ ZIP's InputStream
ตัวอย่างส่วนใหญ่แสดงวิธีการรับเนื้อหาโดยใช้คำสั่งนี้:
ZipFile zipFile = new ZipFile("location");
แต่อย่างที่ฉันบอกไป ฉันไม่มีไฟล์ ZIP ในเครื่องของฉัน และฉันไม่ต้องการดาวน์โหลด InputStream
เพียงพอที่จะอ่านหรือไม่
UPD: นี่คือวิธีที่ฉันทำ:
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();
}
}
}