ChannelSftp如何判断一个远程目录是否存在

一个令人纠结的问题:java程序运行在windows平台上,需要对远程linux服务器上的文件进行操作,如何判断一个指定目录是否在远程服务器上已经存在?

因为两个平台的文件系统不一样,不能简单地通过java.io.File里的exists()来实现。在我看来非常强大的com.jcraft.jsch.ChannelSftp也没有直接提供类似的api。想来想去,找到了一个比较tricky的方法。

先来看一小段代码:

  
  
  
  
  1. try
  2.    Vector content = channelSftp.ls(dir); 
  3.     if(content == null) { 
  4.       channelSftp.mkdir(dir); 
  5.     } 
  6. catch (SftpException e) { 
  7.     channelSftp.mkdir(dir); 

在不考虑其它一切外部因素的情况下,目标目录dir如果已经存在,content不会为null,哪怕它是一个空目录,如果dir不存在,会抛出一个SftpException,在catch block里可以作进一步处理。

哪位有什么更好的方法,可以交流交流。

你可能感兴趣的:(ChannelSftp,目录是否存在)