6

如何确定 url 是指文件还是目录。链接http://example.com/test.txt应该返回它是一个文件http://example.com/dir/是一个目录

我知道您可以使用 Uri 类执行此操作,但此对象 IsFile 函数仅适用于 file:/// 方案。我正在使用 http:// 方案。有任何想法吗?

谢谢

4

3 回答 3

3

我不确定为什么这个问题很长一段时间都没有得到回答/被忽视。我在服务器端 java 中遇到了同样的情况(估计 Android 风格的情况类似)。唯一的输入信息是资源的 URL,我们需要判断资源是目录还是文件。所以这是我的解决方案。

if ("file".equals(resourceUrl.getProtocol())
    && new File(resourceUrl.toURI()).isDirectory()) {
    // it's a directory
}

希望这对下一位读者有所帮助。

注意:请参阅@awwsmm 评论。提供上述答案时,这是我的假设。基本上,测试远程资源是否是目录或任何东西是没有意义的。完全由站点决定为每个请求返回什么。

于 2016-03-14T23:51:33.930 回答
0

它不起作用,因为协议是 http:// 而不是 file://。

 class TestURL{
   public static boolean isDirectory(URL resourceUrl){
     if ("file".equals(resourceUrl.getProtocol())
       && new File(resourceUrl.toURI()).isDirectory()) {
        true;
     }
     return false;
   }
   public static void main(String[] args){
     System.out.println(TestURL.isDirectory("http://example.com/mydir/"));
   }
 }
于 2016-08-24T15:07:12.153 回答
0

我认为目录http://example.com/some/dir会重定向到http://example.com/some/dir/,文件不会。

即可以检查LocationHEAD 响应中的 http 字段:

$ curl -I http://example.com/some/dir | grep Location
Location: http://example.com/some/dir/
于 2019-06-20T17:03:45.953 回答