我如何知道文件类型是否为PDF?

day*_*mer 6 java pdf

  • 这个答案如何确定文件是否是PDF文件?建议下载另一个库,但我的要求是我只需要检查文件目录是否为PDF类型

  • 使用完整的库用于此用途看起来像矫枉过正

  • 有没有办法知道Java文件是PDF类型?

Eld*_*ael 14

好吧,根据维基百科 PDF文件以幻数开头:"%PDF" (hex 25 50 44 46)所以也许你应该检查文件中的InputStream并检查它.

  • @SamIam - 听起来像支持使用库的另一个论点. (3认同)
  • 确切地说,由于这种事情我将使用一个库,如apache Tika,PRONOM DROID,JHove或任何其他识别工具,因为他们不仅查看签名而且还查看整个格式和尾随字节并给你特定信息,如mime,格式和版本. (2认同)

Abd*_*ull 5

SimpleMagic是用于解析内容类型的Java库:

<!-- pom.xml -->
    <dependency>
        <groupId>com.j256.simplemagic</groupId>
        <artifactId>simplemagic</artifactId>
        <version>1.8</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)
import com.j256.simplemagic.ContentInfo;
import com.j256.simplemagic.ContentInfoUtil;
import com.j256.simplemagic.ContentType;
// ...

public class SimpleMagicSmokeTest {

    private final static Logger log = LoggerFactory.getLogger(SimpleMagicSmokeTest.class);

    @Test
    public void smokeTestSimpleMagic() throws IOException {
        ContentInfoUtil util = new ContentInfoUtil();
        File possiblePdfFile = new File("/path/to/possiblePdfFile.pdf");
        ContentInfo info = util.findMatch(possiblePdfFile);

        log.info( info.toString() );
        assertEquals( ContentType.PDF, info.getContentType() );
    }
Run Code Online (Sandbox Code Playgroud)