2015-09-30 40 views
0

Java在內容類型檢測器中構建,但是,它自然會遺漏一些文件類型。添加要由Files.probeContentType識別的文件類型(new File(「.ttf」)。toPath());

Files.probeContentType(new File(".ttf").toPath()); 

看起來好像實現允許一個增加更多FileTypeDetectors,但我無法弄清楚如何。

參考:

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#probeContentType(java.nio.file.Path)

http://docs.oracle.com/javase/7/docs/api/java/nio/file/spi/FileTypeDetector.html

所以你怎麼能一個添加更多文件被探測?

在另一個說明中,你認爲Java File.proveContentType是否有效?不僅人們需要創建一個Path對象,而且似乎每次都要迭代這些對象。我想上面需要一個緩存機制。

回答

1

要安裝自己FileTypeDetector首先要創建自己的實現:

public class MyFileTypeDetector extends java.nio.file.spi.FileTypeDetector { 
    public String probeContentType(Path path) throws IOException { 
     return ... 
    } 
} 

然後第二個,你一個文件/META-INF/services/java.nio.file.spi.FileTypeDetector添加到其中包含您執行的jar:它的內容是你實現的限定類名:

org.example.MyFileTypeDetector 
+0

謝謝!我希望他們可以讓它更容易一些,比如可能只是使用hashmap和擴展。我想這是更靈活一點。 – momomo

+0

@momo FileTypeDetector可以決定查看文件,例如檢測一些魔術字節,因此更一般的方法 – wero

+0

是的,我想到了這樣的東西。 – momomo