如何查看网址http://www.test.com/abc.pdf是文件还是目录?

时间:2011-03-24 00:48:38

标签: java file url directory

我想在java中编写一些代码,以确定给定的url是文件还是目录。我怎么能这样做?

3 个答案:

答案 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,可能缺少文件扩展名?)或者为此使用不同的协议。