我正在尝试使用Windows上的ssh
3.0版将整个文件夹复制/下载到本地计算机。由于在Windows 10上无法使用ssh2::Session::scp_recv
,因此我找到了另一种下载方式。但是,这需要知道将要下载的每个文件的路径。在这种情况下,有必要从某个目录中下载所有PDF,而其中的子目录数量未知。
1。 如上所述,我正在运行Windows 10,不幸的是,该应用程序也需要在其他Windows 10系统上运行。
2。
为了确定任何PDF的路径,我尝试使用递归函数build_paths
fn build_paths(sess: &ssh2::Session, remotedir: &str) {
let sftp_conn = sess.sftp().expect("Failed to create SFTP Handle!");
let dir = sftp_conn
.readdir(Path::new(remotedir))
.expect("Failed to open remote path!");
for f in dir {
let (ff, stats) = f;
let p = Path::new(&ff);
if p.extension() == Some(OsStr::new("pdf")) {
println!("File found!");
}
else {
let d = sftp_conn.readdir(p); // start directory
for subdir in d.unwrap() {
println!("{:#?}", subdir);
println!("{:?}", subdir.0.to_str().unwrap());
build_paths(sess, subdir.0.to_str().unwrap()); //results in "infinite recursion"
}
}
}
}
预期输出“找到文件!” (此后需要执行实际路径构建);但是,实际结果是该函数的无限递归。