确定java中上传文件的文件类型/扩展名

时间:2014-03-26 09:12:19

标签: java

我试图找出一种方法来确定我在struts2应用程序中上传的文件的文件类型。我的应用程序可以读取CSV和XML文件,并根据上载的文件类型执行操作。我将该文件作为“文件”类的实例。该文件永远不会复制到系统上。

我想知道如何确定上传文件的类型/内容。我尝试了下面这段代码,看看我是否得到了文件类型:

String extension = FilenameUtils.getExtension(file.getAbsolutePath);

日志记录扩展名为“tmp”扩展名。 我该怎么做才能获得文件扩展名?

5 个答案:

答案 0 :(得分:2)

如果您使用Java 7,则可以使用Files.probeContentType()。它没有被扩展引诱......

JDK有许多文件格式被识别为默认格式;这对你来说已经足够了。

否则,它是可扩展的!

用法:

Files.probeContentType(file.toPath().toAbsolutePath())

答案 1 :(得分:0)

检查以下库:http://jmimemagic.sourceforge.net/index.html

应该是你需要的那个。您也可以考虑following review,它涵盖了很多此类库。

实际上所有类似Unix的现代系统都有file实用程序,用于检查给定文件内容并根据其数据库(/etc/magic/usr/share/file/magic报告其类型)。但是这种方法涉及对外部系统功能的依赖,这可能是你无法访问的。

答案 2 :(得分:0)

试试这个:

 public static void main(String[] args) {
    File f = new File("d:/sample.txt");
    System.out.println(getExtention(f.getAbsolutePath()));
}

public static String getExtention(String file){
    if(null == file  || !file.contains(".")){
        return null;
    }else{
        return file.substring(file.lastIndexOf("."));
    }
}

答案 3 :(得分:0)

我找到了解决方案。因为我使用struts,我只需要创建一个新的setter方法。如果文件对象是X,我必须创建一个setter方法

setXFileName(String fileName){
this.xFileName = fileName;
}

struts完成剩下的工作

答案 4 :(得分:-1)

您可以尝试从此

获取扩展程序
private String getFileExt(File file) {
String name = file.getName();
try {
    return name.substring(name.lastIndexOf("."));

} catch (Exception e) {
    return "";
}

}