Java 使用JSch时重命名命令不起作用
尝试使用JSch API重命名文件/文件夹,并将其作为shell命令执行,这是无效的Java 使用JSch时重命名命令不起作用,java,sftp,jsch,Java,Sftp,Jsch,尝试使用JSch API重命名文件/文件夹,并将其作为shell命令执行,这是无效的mkdir和rmdir工作正常 JDK版本–11。 JSch版本–0.1.55 使用以下代码 ChannelExec execChannel = null; try { execChannel = (ChannelExec) session.openChannel("exec"); execChannel.connect(); execChannel.setCommand(&quo
mkdir
和rmdir
工作正常
JDK版本–11。JSch版本–0.1.55 使用以下代码
ChannelExec execChannel = null;
try {
execChannel = (ChannelExec) session.openChannel("exec");
execChannel.connect();
execChannel.setCommand("rename dir1 dir2");
execChannel.start();
} catch (JSchException ex) {
throw new IOException(ex);
} finally {
if (execChannel != null) {
execChannel.disconnect();
}
}
更新:
- SFTP服务器托管在CentOS计算机上
,mv
,ren
-它们都不起作用rename
- 我们如何知道该命令不起作用-文件夹名称仍然是旧名称。另外,
给出了execChannel.getExitStatus()
。不会抛出任何错误-1
rename
。改用mv
您很可能执行了错误的命令。如果您正在连接到Linux,则要使用的命令是
但是,您不应该将shell命令用于创建和删除目录以及重命名文件/目录等琐碎的文件操作。这是一个非常脆弱的方法 相反,使用SSH的标准文件管理API(在JSch中)
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
sftpChannel.mkdir("/path/dir1")
sftpChannel.rename("/path/dir1", "/path/dir2");
sftpChannel.rmdir("/path/dir2");