如何在java中检查文件类型

如何在java中检查文件类型,java,file-type,Java,File Type,如何检查文件版本是.gz还是.bzip2。我搜索了文件Java文档,但找不到任何方法。你能告诉我吗 我的要求是在UI上显示该文件,如果.txt不存在,则检查.gz是否存在,如果不存在,则检查.bzip2文件是否存在,因此我希望检查该文件的扩展名。我假设我需要查看文件的类型。Java7提供了返回 […]多用途Internet邮件值的字符串形式 RFC 2045定义的扩展(MIME)内容类型:多用途 Internet邮件扩展(MIME)第一部分:Internet邮件格式 身体。根据中的语法,字符串必

如何检查文件版本是
.gz
还是
.bzip2
。我搜索了文件Java文档,但找不到任何方法。你能告诉我吗

我的要求是在UI上显示该文件,如果.txt不存在,则检查.gz是否存在,如果不存在,则检查.bzip2文件是否存在,因此我希望检查该文件的扩展名。我假设我需要查看文件的类型。

Java7提供了返回

[…]多用途Internet邮件值的字符串形式 RFC 2045定义的扩展(MIME)内容类型:多用途 Internet邮件扩展(MIME)第一部分:Internet邮件格式 身体。根据中的语法,字符串必须是可分析的 RFC 2045


如果失败了,你没有很多选择。您可以检查扩展名(不安全,因为文件可以有任何名称),或者尝试将其解析为gz或bzip2内容,无论哪个成功,都是正确的

试试这样的东西

String extension = "";
int i = fileName.lastIndexOf('.');
if (i >= 0) { extension = fileName.substring(i+1); }
这将生成不包含“.”的扩展名,因此Notepad.txt此语法将生成txt---或word.docx此语法将生成docx。您可以使用:

  • 获取文件名,然后应用正则表达式
您可以使用的实用程序,并使用
Files.getFileExtension(String-fullName)

输出为:

txt
虽然源代码很简单

public static String getFileExtension(String fullName) {
    checkNotNull(fullName);
    String fileName = new File(fullName).getName();
    int dotIndex = fileName.lastIndexOf('.');
    return (dotIndex == -1) ? "" : fileName.substring(dotIndex + 1);
}

以编程方式确定文件的类型可能会非常棘手,并且已经提出并实现了许多基于内容的文件识别方法。Java中有几种用于检测文件类型的实现,其中大多数基本上或完全基于文件扩展名


下面是

看看文件名中最后一个点后面的字符。这是决定文件类型的唯一因素。您可能需要能够读取这些文件格式的支持库。我建议你开始谷歌搜索……你问的是两个不同的问题,那么你真正感兴趣的是:告诉你“它是什么类型的文件”(这可能是一个明显的谎言,因为.jpg文件实际上可能是一个名为.jpg的php脚本)的文件扩展名,还是基于文件中数据的实际文件类型(这需要打开文件,查看字节布局,并将其与已知布局进行匹配)我想根据正确的文件类型进行一些处理,但这是什么意思呢,还是希望完全忽略该文件,并根据文件中的数据自动检查其内容?(更可靠,但速度要慢得多,并使用更多的cpu和内存)我不认为OP在解析字符串时有任何问题,因为他的问题中似乎没有任何东西表明这一点。@Mike'Pomax'Kamermans,这似乎是堆栈溢出错误!这将检测扩展名,但不会检测文件类型。由于扩展名在linux中是可选的,因此可能并不总是有效。
public static String getFileExtension(String fullName) {
    checkNotNull(fullName);
    String fileName = new File(fullName).getName();
    int dotIndex = fileName.lastIndexOf('.');
    return (dotIndex == -1) ? "" : fileName.substring(dotIndex + 1);
}