如何检查属性文件的文件类型

Posted

技术标签:

【中文标题】如何检查属性文件的文件类型【英文标题】:How to check file type of properties file 【发布时间】:2015-09-02 19:54:35 【问题描述】:

我拥有的程序正在检查大多数文件类型,但是当我使用程序运行时,我有一个 .properties 文件,它说的是文本/纯文本而不是属性文件。如何自定义我的程序以显示属性文件的 mime 类型(基于扩展名和内容):

代码如下:

public class TikaFileTypeDetector 

    private final Tika tika = new Tika();

    public TikaFileTypeDetector() 
        super();
    

    public String probeContentType(Path path) throws IOException 
        // Check contents first
        String fileContentDetect = tika.detect(path.toFile());
        if (!fileContentDetect.equals(MimeTypes.OCTET_STREAM)) 
            return fileContentDetect;
        

        // Try file name only if content search was not successful
        String fileNameDetect = tika.detect(path.toString());
        if (!fileNameDetect.equals(MimeTypes.OCTET_STREAM)) 
            return fileNameDetect;
        

        return null;
    

    public static void main(String[] args) throws IOException 
        Tika tika = new Tika();

        if (args.length != 1) 
            printUsage();
            return;
        

        Path path = Paths.get(args[0]);

        TikaFileTypeDetector detector = new TikaFileTypeDetector();

        String contentType = detector.probeContentType(path);

        System.out.println("File is of type - " + contentType);
    

    public static void printUsage() 
        System.out.print("Usage: java -classpath ... "
                + TikaFileTypeDetector.class.getName()
                + " ");
    

以下是 mime-type 的自定义 xml:

 <?xml version="1.0" encoding="UTF-8"?>
 <mime-info>
   <mime-type type="application/hello">
          <glob pattern="*.properties"/>
   </mime-type>
 </mime-info>

在apache docs 中,上面提到要在xml 中添加一个新的mime 类型并将其添加到代码库中。我现在如何将它添加到我的代码中?我找不到这方面的太多信息

注意:我使用的是 apache tika

【问题讨论】:

text/plain 是 java 属性文件的合理值。 只要添加一个检查,如果 mime 类型是 text/plain 并且文件名以 .properties 结尾,则返回您的自定义 mime 类型值。 也就是说,tika 文档表明有一个文件可以根据文件名 glob 模式添加 mimetypes:tika.apache.org/1.8/parser_guide.html#Add_your_MIME-Type @JPMoresmau 感谢您指出这一点。如果您有任何示例或链接? @Gus 感谢您的链接。我在 xml 中创建了一个自定义 mime 类型,但是如何将它添加到我的程序中,以便我的应用程序可以读取新的文件类型。网站上的信息不多 【参考方案1】:

Tika 1.10 或更高版本通过在其tika-mimetypes.xml 中添加一个名为text/x-java-properties 的新mime 类型来解决此问题

使用以下依赖项,这样您就不必通过添加自定义 mimetype.xml 来弄脏您的双手

    <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-core</artifactId>
        <version>1.10</version>
    </dependency>

我还想补充一点,根据documentation,如果org/apache/tika/mime/tika-mimetypes.xml 中缺少任何标准mime 类型,项目团队欢迎添加补丁。

【讨论】:

以上是关于如何检查属性文件的文件类型的主要内容,如果未能解决你的问题,请参考以下文章

如何检查文件中的数据类型

如何检查文件是不是存在(无论其文件类型如何)? [复制]

如何在multer中检查文件类型

input file 上传文件类型大小检查

如何在c#中检查url是文件类型还是网页类型?

PHP:如何正确检查文件的 MIME 类型?