在单个操作中移动 SFTP 位置中的多个文件
Move multiple files in a SFTP location in a single operation
我必须将多个文件从文件夹 A 移动到 SFTP 位置的 B。我在 java 中使用 Jsch 库。目前,我的实现通过调用下面定义的方法 move 来一一完成。
我们可以一次性传输它吗,因为我已经有了所有的源文件路径 - 这样会比来回多次 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
。无需为每个移动请求打开和关闭它。实际上,您甚至 open/close 每个请求的整个 SFTP 连接。
半年前我在回答你的Getting session and SFTP channel in Java using JSch library时实际上已经建议你了,你甚至都懒得回应。
我必须将多个文件从文件夹 A 移动到 SFTP 位置的 B。我在 java 中使用 Jsch 库。目前,我的实现通过调用下面定义的方法 move 来一一完成。
我们可以一次性传输它吗,因为我已经有了所有的源文件路径 - 这样会比来回多次 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
。无需为每个移动请求打开和关闭它。实际上,您甚至 open/close 每个请求的整个 SFTP 连接。
半年前我在回答你的Getting session and SFTP channel in Java using JSch library时实际上已经建议你了,你甚至都懒得回应。