java - 在单个操作中移动 SFTP 位置中的多个文件
问题描述
我必须将多个文件从文件夹 A 移动到 SFTP 位置的 B。我在java中使用Jsch库。目前我的实现通过调用下面定义的方法来一一完成。
我们可以一次性传输它,因为我已经拥有所有源文件路径 - 这将更有效,而不是来回多次 IO 通信。
public default boolean move(String srcPath, String destPath) throws JSchException, SftpException
{
ChannelSftp channelSftp = getChannel();
if (channelSftp == null)
throw new SftpException(0, "Service: ChannelSftp is NULL");
channelSftp.rename(srcPath, destPath);
disconnect(channelSftp);
return true;
}
public default void disconnect(ChannelSftp channelSftp) throws JSchException
{
channelSftp.disconnect();
Session session = channelSftp.getSession();
if(session != null)
session.disconnect();
}
解决方案
SFTP 协议中没有批量移动操作。所以没有办法实现你所要求的。
但是你应该重用ChannelSftp
. 无需为每个移动请求打开和关闭它。实际上,您甚至可以为每个请求打开/关闭整个 SFTP 连接。
半年前,我实际上已经在我对使用 JSch 库的 Java 获取会话和 SFTP 通道的回答中向您提出了建议,您甚至都懒得回应。
推荐阅读
- javascript - 在 highcharts 中使用动态 html 渲染标题
- reactjs - 无法添加传单地理搜索以响应应用程序
- algorithm - 最长公共子序列取所有三种可能情况的最大值
- caching - 如何解决 org.infinispan.commons.CacheException?
- ruby - AWS Lambda 用替换字符(U+FFFD)替换多部分格式数据附件中的某些字符
- django - Django 按外键过滤查询
- excel - 我想使用 IFS 函数检查 IF 公式
- linux - 由于 iconv 错误,我无法执行堆栈设置
- intellij-idea - 如何在 IntelliJ IDEA 中多次运行同一个项目?
- bash - 如何在 bash 中扩展表达式以获取由 ; 分隔的多个命令