当前位置: 首页 > 面试题库 >

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

翁鸿远
2023-03-14
问题内容

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

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

为达到这个:

  • 我必须创建Dir’y like "/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);
        }


 类似资料:
  • 问题内容: 我正在尝试从Go可执行文件(例如’dir1 / dir2 / dir3’)创建一组嵌套目录。我已成功创建以下一行的目录: 但是,我不知道如何在该目录内创建预定的嵌套目录集。 问题答案: 用于创建单个目录。要创建文件夹路径,请尝试使用: 转到文档 func MkdirAll(路径字符串,烫发FileMode)错误 MkdirAll创建一个名为path的目录以及所有必要的父目录,并返回ni

  • 我正在使用不和谐的网络钩子应用编程接口向我的不和谐服务器通道发送消息。在一个新的用例中,我想创建一个带有网络钩子的新频道。不幸的是,我找不到任何API这样做。我看了整个留档https://discordapp.com/developers/docs/resources/webhook#create-webhook 这有可能做到吗?我看到了一个允许它的不和谐机器人的方法——因此我觉得用网络钩子也应该

  • 问题内容: 说我要制作以下JSON 目前,这就是我实现的方式 似乎应该有一个更好的方法来做到这一点,而不是做更多的事情,然后将它们放置在主体中。有比我正在使用的方法更好的动态构建方法吗? 在此先感谢您的帮助! 问题答案: 如果您处理大量JSON数据,我真的建议您使用Gson或Jackson。这要方便得多,并且两个库都很好地支持与Java对象之间的相互转换(与通过JSONObjects手动构建JSO

  • 问题内容: 如何将JSON传递到RAILS应用程序,以便它将以has_many关系创建嵌套的子对象? 这是我到目前为止的内容: 两个模型对象。 使用通勤,我可以设置标准控制器。我希望能够使用JSON在一个REST调用中创建一个Commute对象以及几个子Location对象。我一直在尝试这样的事情: 更具可读性的JSON是: 执行该命令时,将得到以下输出: 看起来好像正在读取JSON数组的loca

  • 我正在尝试在我的CentOS 7服务器上使用systemctl创建服务。 在/usr/lib/systemd/system中,我遇到了这种情况。。。 如果我试图执行 一切正常。 在/etc/systemd/system中,我有这个。。。。 当我尝试执行时 我获得 我的日志是如下。。。。 我哪里错了? 提前谢谢你!

  • 了解如何在 Dreamweaver 中创建用于控制共享设计元素的页面中的内容的嵌套模板。 嵌套模板是指其设计和可编辑区域都基于另一个模板的模板。嵌套模板对于控制共享许多设计元素的站点页面中的内容很有用,但在各页之间有些差异。例如,基本模板中可能包含更宽广的设计区域,并且可以由站点的许多内容提供者使用,而嵌套模板可能进一步定义站点内特定部分的页面中的可编辑区域。 基本模板中的可编辑区域被传递到嵌套模