根据文件中的字符找出文件类型



我想找出.properties文件的文件类型,它基本上是一个文本文件。使用 Apache tika 和其他 MIME 类型检测器将 .properties 文件打印为"文本/纯文本"文件,因为用于文本文件和 .properties 的幻数是相同的。

我想找出一种方法来根据 .properties 文件中的特殊字符或符号来区分它,该文件是键/值对之间的=符号或 ascii 值= chr(61) 00111101以及 .extension 类型的验证。

因此,如果我说验证一个文件:如果该文件包含=符号并且扩展名类型是.properties,则返回输出为.properties文件。我不确定这是否是一种好方法,而且如果我可以实现它,我将如何添加其他 MIME 类型检测器,以便我也可以检测所有其他格式,而不是使用不同的自定义类。

注意:我尝试将自定义类型添加到apche tika,但根本不起作用。如果你能建议的话,可能是其他一些库(例如:MimeUtils)

首先,您必须知道正在检查的文件类型(如果是文本还是二进制等),因为您必须知道如何阅读它。因此,第一步是检测它是文本/纯文件类型。其次,要确定它是否是属性文件,检查"="是不够的。因为您可能有这个:

key1=val1=val3
key2=val4
key3

在上面的三行中,只有第二行是有效的属性文件行。 所以你需要检查文件的每一行都遵循模式(它仅限于字符和数字,但你明白了):

^[a-zA-Z0-9_]+=[a-zA-Z0-9_]+!

我认为验证属性文件的一种简单方法是将文件内容加载到属性对象中(请参阅 java.util.Properties,具有从资源加载它的方法)。

Java 属性文件几乎总是具有".properties"扩展名。 除此之外,它没有可识别的签名。 大多数读取此类文件的机制都希望它们是 ISO-8859-1 文本文件(因为在 Java 6 之前是必需的),因此即使检查它们是否只包含 ASCII 字节也是不够的。

如果您知道文件中将包含哪些键,则应使用 Properties.load 加载它,并在 Properties 对象中检查这些键。 否则,检查文件名中的扩展名可能是您可以做的最可靠的事情。

相关内容

  • 没有找到相关文章

最新更新