我想在java中编写一些代码,以确定给定的url是文件还是目录。我怎么能这样做?
答案 0 :(得分:8)
网址本身没有“文件”或“目录”的概念。 URL的内容由服务器在请求时响应的任何内容定义。如果您获得MIME类型为application/pdf
的内容,则该URL表示PDF文件。如果您还有其他任何内容,那么它不是PDF文件。
答案 1 :(得分:2)
在任何URL / URI规范,HTTP规范或MIME类型注册表中根本没有“目录”的概念。
因此,网络服务器无法告诉客户一个URL解析为目录......即使它知道这意味着什么。 (在许多情况下,网络服务器不知道/关心目录本身;例如,典型的RESTful Web API无法识别该概念。)
您的选择是:
尝试获取内容并查看您获得的内容类型。但请记住,网络服务器可能会将“目录”呈现为任何内容......因此(通常)无法通过这种方式可靠地区分目录和非目录。
如果您想避免下载文件,可以发送HEAD请求而不是GET请求。这需要使用完全成熟的HTTP客户端库而不是URLConnection
。
更改您的应用程序设计和实现,以便不需要“目录”概念。
更改您的应用程序,以便 it 决定什么是“目录”,什么是纯粹基于URL的“文件”。 (在一般情况下,这不起作用......因为没有普遍观察到的URL名称部分的约定,这些约定将允许您进行区分。)
更改为使用URL方案/协议,其中“目录”是明确定义的概念。例如“file:”或“ftp:”。
答案 2 :(得分:0)
从URL返回的内容本质上不是“文件”或“目录”。充其量,它是具有内容类型的数据流。它通常成为客户端的“文件”,通过将其保存到文件系统或临时存储仅供显示。基本上,Web服务器无法告诉客户端某些内容是使用HTTP的目录。
您要么必须创建一些客户端业务逻辑来推断“目录”(可能基于URL,可能缺少文件扩展名?)或者为此使用不同的协议。