2010-01-19 75 views
4

我想确定真正的文件扩展名为安全原因。获取真实文件扩展名 - Java代码

我该怎么做?

+6

你是什么意思“真实”?你在寻找文件的真实内容类型吗? – 2010-01-19 04:16:52

+0

如果你的意思是基于文件内容的“真正的延伸”,那么魔术数字是一个很好的开始。 – cx0der 2010-01-19 04:21:15

+1

我想他是在谈论真正的文件类型。这意味着,如果您将EXE重命名为jpg,他需要将其检测为exe。是。魔术数字是可能的方法之一。 – 2010-01-19 04:24:47

回答

11

假设你真的想要得到一个文件的真实内容类型(即它是MIME类型),你应该参考这个excellent answer

您可以用下面的代码获得Java中的文件的真实内容类型:

File file = new File("filename.asgdsag"); 
InputStream is = new BufferedInputStream(new FileInputStream(file)); 
String mimeType = URLConnection.guessContentTypeFromStream(is); 
+0

也重新定向SO用户,提供类似的问题回答:)很遗憾,'URLConnection.guessContentTypeFromStream'方法并不为人所知 - 很多资源建议使用第三方库,当答案在那里时'JDK'。 – Yura 2012-11-09 11:22:21

0

不知道到底是什么意思,但是无论你如何做到这一点,只是要为一组特定的文件格式,这是众所周知的,你

您可以排除的可执行文件的工作(在这里你说的窗户?) - 这里有一些文件头信息http://support.microsoft.com/kb/65122 - 你可以扫描和阻止看起来像是有exe头文件的文件 - 当你说'真正的文件扩展名'时,这是否接近你的意思?

1

a number of ways,你可以做到这一点,一些比其他人更复杂的(更可靠)。我链接到的页面讨论了其中一些方法。