Java中检查服务器上路径是否存在

3

我正在创建一个Java程序,通过jSch进行sftp上传到特定路径的服务器。因此,在上传文件之前,我想检查服务器上指定的目录是否存在。

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

如何检查路径是否存在?

注意:我正在客户端上执行代码,将检查服务器上的远程目录是否存在。因此,请不要建议使用File.exists()


@BrianRoach - OP希望通过ftp从客户端程序检查服务器上的文件是否存在。 File.exists()无法完成此工作。 - Ted Hopp
看起来是这样,但说实话,它的书写方式很容易被误读。我还得读了两遍才明白你的意思;我一直忽略了第一句话。 - Brian Roach
我不知道为什么这个问题被踩了??? 我想检查服务器上的路径而不是本地机器... File.exists() 在服务器上不起作用... - earthmover
你在使用什么库上传文件?它没有提供任何检查路径是否存在的方法吗? - Sudhanshu Umalkar
2
我不知道为什么会有人踩你的问题,但我可以猜测:你提问的方式表明简单调用 File.exists() 或者 File.isDirectory() 就能满足你的需求。你应该重新编辑问题,澄清需要在客户端执行代码来检查服务器上的远程目录是否存在。 - Ted Hopp
显示剩余3条评论
2个回答

11

阅读ChannelSftp文档,看起来你只需要lstat目录:

SftpATTRS attrs = channelSftp.lstat(path);

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


很好的尝试,但如果路径不存在它不会返回null,而是会抛出异常(文件不存在)。 - earthmover
@AnkitLamba 所以...这就是你的答案。这个库的文档太糟糕了,我真的无法确定,而且快速阅读他的代码也没有帮助(它并不是自我记录的)。 (编辑更改结果) - Brian Roach
1
@AnkitLamba - 你可以简单地捕获异常来检测目录是否存在。 - Ted Hopp
您可以使用channelSftp.ls("<parent dir path>")列出父目录的内容,并检查所需文件夹是否存在。 - Sudhanshu Umalkar
2
@Sudhanshu 为什么?这样你就可以为了好玩而添加不必要的字符串处理代码吗? - Brian Roach

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接