java - 在 Java 中使用 JSch 在服务器上创建嵌套目录

标签 java jsch mkdir

我正在使用 jSch 在 Java 中制作文件上传应用程序。我想根据文件的创建日期等将文件放在不同的目录中。

我有一个主目录“/var/local/recordingsbackup/”,我在其中创建其他目录并将数据放入其中。

要实现这一点:

  • 我必须像这样创建 Di'y “/var/local/recordingsbackup/20140207/root/SUCCESS/WN/” 并放入 里面有数据。

到目前为止我已经尝试过:

private void fileTransfer(ChannelSftp channelTarget, temp_recording_log recObj, String filePath) {

        int fileNameStartIndex = filePath.lastIndexOf("/") + 1;
        String date = new SimpleDateFormat("yyyyMMdd").format(recObj.getCalldate());
        String fileName = filePath.substring(fileNameStartIndex);
        String staticPath = "/var/local/recordingsbackup/";
        String completeBackupPath = staticPath + date + "/" + recObj.getUsername() + "/" + recObj.getStatus() + "/" + recObj.getDisposition() + "/";

        try {
            InputStream get = SourceChannel.get(filePath);
            try {
                channelTarget.put(get, completeBackupPath + fileName);
            } catch (SftpException e) {
                System.out.println("Creating Directory...");
                channelTarget.mkdir(completeBackupPath); // error on this line
                channelTarget.put(get, completeBackupPath + fileName);
            }
        } catch (SftpException e) {
            log.error("Error Occured ======== File or Directory dosen't exists === " + filePath);
            e.printStackTrace();
        }
}
  • 如果我创建像 /var/local/recordingsbackup/ 这样的单个目录,则不会发生错误并且文件已成功上传。

请帮助我...我怎样才能创建这些嵌套目录???

最佳答案

我终于做到了。

这就是我成功的方法:

try {
            channelTarget.put(get, completeBackupPath + fileName);
        } catch (SftpException e) {
            System.out.println("Creating Directory...");
            String[] complPath = completeBackupPath.split("/");
            channelTarget.cd("/");
            for (String dir : complPath) {
                if (folder.length() > 0) {
                    try {
                        System.out.println("Current Dir : " + channelTarget.pwd());
                        channelTarget.cd(folder);
                    } catch (SftpException e2) {
                        channelTarget.mkdir(folder);
                        channelTarget.cd(folder);
                    }
                }
            }
            channelTarget.cd("/");
            System.out.println("Current Dir : " + channelTarget.pwd());
            channelTarget.put(get, completeBackupPath + fileName);
        }

关于java - 在 Java 中使用 JSch 在服务器上创建嵌套目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57528086/

相关文章:

python makedirs 权限被拒绝

java - 无法在我的 Windows 7 机器上运行 Apache Tomcat

java - 使用 JDBC 将 clob 数据传递到 Oracle 存储过程时出现错误 ORA-22828

java - 在当前主题中找不到样式 'floatingActionButtonStyle'

rsync - 为什么 rsync 使用没有 p 选项的 mkdir

go - 如果 mkdir 不存在,则使用 golang

java - 从类 Snake 调用类 render 中的 PaintComponent(Graphics g) 方法时出现问题

java - 即使 java 代码终止,JSch 也会继续执行该命令吗?

java - 在 Java 中使用 JSch 在服务器上创建嵌套目录

java - 如何通过EC2 SSH隧道从本地JAVA程序连接到RDS