繁体   English   中英

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

[英]how to find out if the url http://www.test.com/abc.pdf is a file or a directory?

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

URL本身不具有“文件”或“目录”的概念。 URL的内容由服务器在请求时响应的任何内容定义。 如果您获得MIME类型为application/pdf ,则URL表示PDF文件。 如果你得到任何其他东西,那么它不是PDF文件。

在任何URL / URI规范,HTTP规范或MIME类型注册表中都没有“目录”的概念。

因此,网络服务器无法告诉客户端 URL解析为目录......即使它知道这意味着什么。 (在许多情况下,Web服务器不知道/关心目录本身;例如,典型的RESTful Web API无法识别该概念。)

你的选择是:

  • 尝试获取内容并查看您获得的内容类型。 但请记住,网络服务器可能会将“目录”呈现为任何内容......因此(通常)不可能以这种方式可靠地区分目录和非目录。

    如果您想避免下载文件,可以发送HEAD请求而不是GET请求。 这需要使用完全成熟的HTTP客户端库而不是URLConnection

  • 更改您的应用程序设计和实现,以便不需要“目录”概念。

  • 更改您的应用程序,以便决定什么是“目录”,什么是纯粹基于URL的“文件”。 (在一般情况下,这将不起作用......因为没有普遍观察到的URL名称部分的约定,这将允许您进行区分。)

  • 更改为使用URL方案/协议,其中“目录”是明确定义的概念。 例如“file:”或“ftp:”。

从URL返回的内容本质上不是“文件”或“目录”。 充其量,它是具有内容类型的数据流。 它通常成为客户端的“文件”,通过将其保存到文件系统或临时存储仅供显示。 基本上,Web服务器无法告诉客户端某些东西是使用HTTP的目录。

您要么必须创建一些客户端业务逻辑来推断“目录”(可能基于URL,可能缺少文件扩展名?)或使用不同的协议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM