检查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("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("我不熟悉这个库,但是从这个示例代码:http://www.jcraft.com/jsch/examples/Sftp.java.html 看起来你可以使用
ChannelSftp c = ..;
c.ls('<path>')
要检索文件,这应该告诉你它是否存在。
【讨论】:
以上是关于检查Java中服务器上是不是存在路径[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用bash将文件从已删除文件夹移动到其原始路径应检查原始路径中是不是存在同名文件[重复]