我试图找出一种方法来确定我在struts2应用程序中上传的文件的文件类型。我的应用程序可以读取CSV和XML文件,并根据上载的文件类型执行操作。我将该文件作为“文件”类的实例。该文件永远不会复制到系统上。
我想知道如何确定上传文件的类型/内容。我尝试了下面这段代码,看看我是否得到了文件类型:
String extension = FilenameUtils.getExtension(file.getAbsolutePath);
日志记录扩展名为“tmp”扩展名。 我该怎么做才能获得文件扩展名?
答案 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 "";
}
}