我正在尝试将文件从一个目录复制到SFTP中的另一个目录。在目标目录中,文件名已经存在,我正在尝试覆盖它。但是,当我执行代码时,出现错误消息。 下面是Java代码
public static void main(String a[]) {
try {
JSch jsch = new JSch();
Session session = jsch.getSession("root", "localhost", 22);
session.setPassword("root");
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp channelSftp = (ChannelSftp) channel;
channelSftp.cd("/orderstatus");
Vector<ChannelSftp.LsEntry> list = channelSftp.ls("*.txt");
for(ChannelSftp.LsEntry entry : list) {
System.out.println(entry.getFilename());
}
channelSftp.rename("test.txt", "/orderstatus/test1/test.txt");
channelSftp.exit();
session.disconnect();
} catch (Exception ex) {
ex.printStackTrace();
}
}
我遇到错误
5: Bad message
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2873)
at com.jcraft.jsch.ChannelSftp.rename(ChannelSftp.java:1950)
at com.rue21.inventory.support.EncryptDecrypt.main(EncryptDecrypt.java:103)
我希望目标文件被源文件覆盖
答案 0 :(得分:1)
ChannelSftp.rename
移动/重命名文件。它不会复制它。
您不能在现有文件上重命名/移动文件。您必须在重命名之前删除目标文件。