gpt4 book ai didi

java - 没有 I/O 的 Java 文件类型检测

转载 作者:行者123 更新时间:2023-11-29 05:11:51 24 4
gpt4 key购买 nike

Java JDK中有一个检测文件类型的内置方法:

Files.probeContentType(Paths.get("/temp/word.doc"));

javadoc 说 FileTypeDetector 可能会检查文件名,或者它可能会检查文件中的几个字节,这意味着它必须实际尝试从 URL 中提取文件。

这在我们的应用程序中是 Not Acceptable ;文件的内容只能通过 InputStream 获得。

我试图逐步查看代码以查看 JDK 实际在做什么,但它似乎转到了 FileTypeDetectors.defaultFileTypeDetector.probeContentType(path) 而转到了 sun.nio .fs.AbstractFileTypeDetector,我无法进入该代码,因为没有源附件。

我如何使用 JDK 文件类型检测并强制它使用我提供的文件内容,而不是让它自行执行 I/O?

最佳答案

Files.probeContentType() 的文档解释了如何插入您自己的 FileTypeDetector 实现,但是如果您按照文档进行操作,您会发现没有可靠的方法确保您的实现是被选中的方法(这个想法是不同的实现作为彼此的后备,而不是替代)。肯定没有记录在案的方法来阻止内置实现读取目标文件。

您肯定可以在 Web 的各个地方找到内容类型的常见文件扩展名映射,也可能在您自己的系统上; mime.types 是此类文件的通用名称。如果您想依赖这样的映射文件,那么您可能需要使用您自己的自定义工具,而不是 Java 标准库的工具。

关于java - 没有 I/O 的 Java 文件类型检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28177565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com