如何通过Java从下载链接获取文件扩展名?
我想从他们的下载链接中获取一些文件的扩展名 下载链接不包含其文件的扩展名。例如,链接如下所示:如何通过Java从下载链接获取文件扩展名?,java,httpurlconnection,file-extension,Java,Httpurlconnection,File Extension,我想从他们的下载链接中获取一些文件的扩展名 下载链接不包含其文件的扩展名。例如,链接如下所示: http://yourshot.nationalgeographic.com/u/fQYSUbVfts-T7odkrFJckdiFeHvab0GWOfzhj7tYdC0uglagsDNfNYI4FFesWV5zeSPtcfpyHzKZI7dHjkluwtIYNkXOGmjh43Ktdn0VeBWhQ-9l2kheOPt5N2TM3yPEW4tTrtFFqniatwxxhbqsc78IU2pBaqWwy
http://yourshot.nationalgeographic.com/u/fQYSUbVfts-T7odkrFJckdiFeHvab0GWOfzhj7tYdC0uglagsDNfNYI4FFesWV5zeSPtcfpyHzKZI7dHjkluwtIYNkXOGmjh43Ktdn0VeBWhQ-9l2kheOPt5N2TM3yPEW4tTrtFFqniatwxxhbqsc78IU2pBaqWwyEVLeQx64zSda2CNGmUpSxyte_tamVoIk3y4zXisQ-vjmMp6n1BAB3nbUVlwWg/
我尝试使用myHttpUrlConnection.getContentType()
获取文件扩展名,但结果不是我想要的结果
一些下载链接返回一个短语,如“text/plain”
,“application octet stream”
,多部分/表单数据
,…
。但是我只想要正确清晰的类型,比如rar
,mp4
,txt
,jpeg
,mkv
,zip
,png
,apk
,mp3
, 你不能那样做。方法simpy:
返回内容类型标题字段的值
在大多数情况下(尽管没有保证)与文件扩展名/文件类型相关,例如application/pdf
意味着该URL下有一个pdf文件
您列出的每个扩展名文件类型(rar、mp4、txt、jpeg、mkv、zip、png、apk、mp3)都有另一种结构。为了可靠地完成您想做的事情,您必须首先下载整个文件,然后根据内容检查其类型
您可以使用的一个很好的库示例是。谢谢@syntagma。我可以下载几个字节(例如5个字节)的文件,然后检查它的类型吗?或者我必须下载整个文件?在某些情况下,您可以根据N个前字节检测文件类型,例如,请参阅Tika的MagicDetector
:(通过查找特殊(“magic”)在文件开头附近的字节模式中,通常可以检测文件的类型。对于某些文件类型,这是一个简单的过程。对于其他文件类型,通常是基于容器的格式,魔法检测可能不够。(下面关于检测容器格式的详细信息))@Hadi,这取决于文件类型,有些文件有用来识别它们的标题(.class文件和.png文件),但即使有了这些标题,也可能只是碰巧有特定位模式的不同数据