gpt4 book ai didi

java - 如何使用 Jsch 递归地 FTP 目录结构?

转载 作者:行者123 更新时间:2023-11-30 06:18:00 25 4
gpt4 key购买 nike

我正在尝试遍历目录并上传同一结构中的所有内容和目录。

这是一个示例结构:

Dir1/
....Dir1_1/
....Dir1_2/
........Dir1_2_1/
............file.txt
Dir2/
....file.txt
....file2.txt
Dir3/
Dir4/
index.html
index.css
example.file

我已尝试以下操作:

private void ftpFiles(File[] files, ChannelSftp channelSftp) throws SftpException, FileNotFoundException {
for (File file : files) {
System.out.println("Uploading: " + file.getName());

if (file.isDirectory()) {
System.out.println(file.getName() + " is a directory");
SftpATTRS attrs;
try {
channelSftp.stat(file.getName());
} catch (Exception e) {
System.out.println(file.getName() + " does not exist. Creating it...");
channelSftp.mkdir(file.getName());
}
channelSftp.cd(file.getName());

this.ftpFiles(file.listFiles(), channelSftp);
} else {
channelSftp.put(new FileInputStream(file), file.getName());
}
}
}

我正在获取一系列顶级文件,并递归地向下查找每个文件。

The problem is once I hit the first directory and cd into it, all further files and directories are inside of this.

示例: /Dir1/Dir1_1/Dir1_2/Dir1_2_1/Dir2/Dir3/Dir4/...etc

我怎样才能做../与我的 channel 同时递归调用此函数?

最佳答案

也许类似(伪代码):

List<Files> directories = new ArrayList<> ();
if (file is directory) directories.add(file);
else dowloadFile();

for (File f : directories) {
cd(f);
ftpFiles(listFiles());
cd(..);
}

关于java - 如何使用 Jsch 递归地 FTP 目录结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48789434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com