如何确定 url 是指文件还是目录。链接http://example.com/test.txt应该返回它是一个文件http://example.com/dir/是一个目录
我知道您可以使用 Uri 类执行此操作,但此对象 IsFile 函数仅适用于 file:/// 方案。我正在使用 http:// 方案。有任何想法吗?
谢谢
如何确定 url 是指文件还是目录。链接http://example.com/test.txt应该返回它是一个文件http://example.com/dir/是一个目录
我知道您可以使用 Uri 类执行此操作,但此对象 IsFile 函数仅适用于 file:/// 方案。我正在使用 http:// 方案。有任何想法吗?
谢谢
我不确定为什么这个问题很长一段时间都没有得到回答/被忽视。我在服务器端 java 中遇到了同样的情况(估计 Android 风格的情况类似)。唯一的输入信息是资源的 URL,我们需要判断资源是目录还是文件。所以这是我的解决方案。
if ("file".equals(resourceUrl.getProtocol())
&& new File(resourceUrl.toURI()).isDirectory()) {
// it's a directory
}
希望这对下一位读者有所帮助。
注意:请参阅@awwsmm 评论。提供上述答案时,这是我的假设。基本上,测试远程资源是否是目录或任何东西是没有意义的。完全由站点决定为每个请求返回什么。
它不起作用,因为协议是 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/"));
}
}
我认为目录http://example.com/some/dir
会重定向到http://example.com/some/dir/
,文件不会。
即可以检查Location
HEAD 响应中的 http 字段:
$ curl -I http://example.com/some/dir | grep Location
Location: http://example.com/some/dir/