Tôi mới sử dụng java và tôi đang cố viết một tập lệnh sẽ kéo nhiều tệp từ các trang SFTP khác nhau hàng ngày.Tải xuống nhiều tệp qua SFTP bằng cách sử dụng Java
Tôi có mã bên dưới sẽ kéo 1 tệp từ 1 trang web và nó hoạt động, tuy nhiên tôi đang cố gắng tìm cách sửa đổi mã của tôi để nó sẽ tải xuống nhiều tệp. Vì vậy, ví dụ: tất cả các tệp trong thư mục từ xa hoặc chỉ một số tệp nhất định có chứa các chữ cái nhất định
Bạn có thể tư vấn cho tôi về điều này không?
mã: -
package package1;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
public class SFTPpullsshkeys {
public SFTPpullsshkeys() {
}
public static void main(String[] args) {
String SFTPHOST = "IP";
int SFTPPORT = 22;
String SFTPUSER = "Username";
String passphrase = "passphrase";
String SFTPWORKINGDIR = "remote directory";
String prikeyfile = "C:\\Open SSH Key.ppk";
Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
try{
JSch jsch = new JSch();
jsch.addIdentity(prikeyfile, passphrase);
session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp)channel;
channelSftp.cd(SFTPWORKINGDIR);
byte[] buffer = new byte[1024];
BufferedInputStream bis = new BufferedInputStream(channelSftp.get("file.csv"));
File newFile = new File("C:\\file.csv");
OutputStream os = new FileOutputStream(newFile);
BufferedOutputStream bos = new BufferedOutputStream(os);
int readCount;
while
((readCount = bis.read(buffer)) > 0) {
System.out.println("Writing files to disk: ");
bos.write(buffer, 0, readCount);
}
bis.close();
bos.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
Vui lòng giải thích cách mã này khắc phục sự cố. – ChrisF