用Java实现获取文件类型的方法。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Java实现获取文件类型的方法。相关的知识,希望对你有一定的参考价值。
获取文件类型,可以理解为获取文件的扩展名。但是因为会存在某文件不具有扩展名,或者伪造扩展名等情况。不知道如何处理。请大侠赐教 ,感激不尽!!!
主要以下几种方法:
这个MimetypesFileMap类会映射出一个file的Mime Type,这些Mime Type类型是在activation.jar包里面的资源文件中定义的
import javax.activation.MimetypesFileTypeMap;import java.io.File;
class GetMimeType
public static void main(String args[])
File f = new File("test.gif");
System.out.println("Mime Type of " + f.getName() + " is " +
new MimetypesFileTypeMap().getContentType(f));
// expected output :
// "Mime Type of test.gif is image/gif"
使用 java.net.URL
警告:这个方法非常慢
与上面所说的匹配后缀名类似。后缀名和mime-type的映射关系被定义在[jre_home]\\lib\\content-types.properties这个文件中
public class FileUtils
public static String getMimeType(String fileUrl)
throws java.io.IOException, MalformedURLException
String type = null;
URL u = new URL(fileUrl);
URLConnection uc = null;
uc = u.openConnection();
type = uc.getContentType();
return type;
public static void main(String args[]) throws Exception
System.out.println(FileUtils.getMimeType("file://c:/temp/test.TXT"));
// output : text/plain
还有一种方式:就是取文件名最后一个“.”后的内容,通过人来判断如
String fileName = "aaa.txt";
String fileType =“txt”//通过方法取出方法类型为
String type = "";
if( fileTyep.equals("txt"))
type = "记事本";
else if(fileTyep.equals("img"))
type = "img图片";
。。。。。
参考技术A 肯定是要用后缀名来判断的,你用正则表达式去判断文件名就可以了。很简单 参考技术B is = new BufferedInputStream(new FileInputStream(fileName));String mimeType = URLConnection.guessContentTypeFromStream(is);
if(mimeType == null)
throw new IOException("can\'t get mime type of image");
追问
看起来这样确实可以取到文件扩展名,不过这种情况是不是表示需要读取文件,来获得文件头的信息,所以会不会影响性能呢。目前的业务是大量文件实时传过来,去判断类型。
本回答被提问者和网友采纳 参考技术C 我这里有个工具类,就是太大了。没法贴出来。呵呵JAVA实现ZIP文件下载,下载时获取不了文件名,只能用固定的文件名代替,而且获取不了下载的文件类型?
如果用文件自身的文件名,下载时文件名变为“download”,而且没有后缀,要手动改为.zip,而用固定的文件名“Template.zip”则可以拿到.zip文件
自己解决了,加上new String( fileName.getBytes("gb2312"), "ISO8859-1" )+".zip"就搞定了,原来是header的长度限制问题。。。。。
filename是从数据库里面获取的,我调试过,是可以拿到真实的文件名。还有,在这里,我用filename+“.zip”,但是下载时也获取不了文件后缀,用"Teamplate.zip"又可以,这里不就是简单的字符拼接而已吗,难道还有什么玄机?
你可以输出一下你拼接的文件名称,看一下是什么,从数据库取出的,有没有考虑数据库编码方式?
以上是关于用Java实现获取文件类型的方法。的主要内容,如果未能解决你的问题,请参考以下文章