检查Java中服务器上是不是存在路径[重复]

Posted

技术标签:

【中文标题】检查Java中服务器上是不是存在路径[重复]【英文标题】:Check whether the path exists on server or not in Java [duplicate]检查Java中服务器上是否存在路径[重复] 【发布时间】:2014-02-12 03:32:40 【问题描述】:

我正在创建一个 Java 程序,在该程序中我将文件上传到特定路径上的服务器。我将jSch 用于sftp

所以,在上传文件之前,我想检查给定目录是否存在于服务器上。

if(path exists)
    //upload file to the location
else
    //create the directory and then upload the file.

如何检查路径是否存在?

注意:我正在客户端上执行代码,该代码将检查服务器上是否存在远程目录。所以请不要推荐File.exists()

【问题讨论】:

new File("").exists(); @BrianRoach - OP 希望通过 ftp 从客户端程序检查文件在服务器上 的存在。 File.exists() 不工作。 看起来是这样,但老实说,它的编写方式很容易被错误地阅读。我还是得读两遍才能明白你的意思;我一直忽略第一句话。 我不知道为什么这个问题被否决???我想检查 SERVER 上的路径,而不是本地机器上... File.exists() 在服务器上不起作用... 我不知道为什么会投反对票,但我可以猜到:您的问题措辞方式表明对File.exists()File.isDirectory() 的简单调用将满足您的需求。您应该改写它以澄清您想强调您需要在客户端上执行代码,以检查服务器上是否存在远程目录。 【参考方案1】:

阅读Documentation for ChannelSftp 看来您可以只使用lstat 目录:

SftpATTRS attrs = channelSftp.lstat(path);

如果抛出异常,则它不存在。然后您可以使用channelSftp.mkdir(path) 来创建它。

【讨论】:

不错的尝试,但如果路径不存在,它不会返回 null,但它会抛出异常(没有这样的文件)。 @AnkitLamba 所以......这就是你的答案。对于我真的无法分辨的库来说,文档太糟糕了,快速阅读他的代码也无济于事(这不完全是自我记录)。 (编辑以更改结果) @AnkitLamba - 您可以简单地捕获异常以检测目录不存在。 您可以尝试使用 channelSftp.ls("") 列出父目录的内容并检查所需的文件夹是否存在。 @Sudhanshu 为什么?因此,您可以在代码中添加不必要的字符串处理来获得乐趣?【参考方案2】:

我不熟悉这个库,但是从这个示例代码:http://www.jcraft.com/jsch/examples/Sftp.java.html 看起来你可以使用

ChannelSftp c = ..;
c.ls('<path>')

要检索文件,这应该告诉你它是否存在。

【讨论】:

以上是关于检查Java中服务器上是不是存在路径[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查linux脚本中是不是存在文件[重复]

使用bash将文件从已删除文件夹移动到其原始路径应检查原始路径中是不是存在同名文件[重复]

如何检查文件(由完整路径给出)是不是存在?节点js [重复]

检查目录是不是存在并计算与其中模式匹配的文件[重复]

如何检查java中是不是存在某个.txt文件[重复]

检查字符串java中是不是存在一段字符串[重复]