我想找出.properties文件的文件类型,它基本上是一个文本文件。使用Apache tika和其他mime类型检测器打印出一个.properties文件为" text / plain" file作为用于文本文件和.properties的幻数将是相同的。
我想知道如何找出一种方法来区分这个基于.properties文件中的特殊字符或符号,其中=
符号或ascii值= chr(61) 00111101
在键/值对之间以及验证.extension类型。
因此,如果我说验证文件:如果文件包含=
符号,而.extension类型是.properties,则返回put作为.properties文件。我不确定这是一个好方法,如果我能实现它,我将如何添加其他mime类型检测器,以便我可以检测所有其他格式,而不是具有不同的自定义类。
注意:我尝试在apche tika中添加自定义类型,但根本不起作用。如果你可以建议,可能是其他一些库(例如:MimeUtils)
答案 0 :(得分:1)
首先,您必须知道要检查的文件的类型(如果是文本或二进制文件等),因为您必须知道如何阅读它。所以第一步是检测这是一个text / plain文件类型。 其次,要确定它是否是属性文件,还不足以检查" ="。因为你可能有这个:
key1=val1=val3
key2=val4
key3
从上面的三行中,只有第二行是有效的属性文件行。所以你需要检查文件的每一行是否遵循模式(它仅限于字符和数字,但你明白了):
^[a-zA-Z0-9_]+=[a-zA-Z0-9_]+!
我认为验证属性文件的一种简单方法是将文件内容加载到Properties对象中(请参阅java.util.Properties,有一种从资源加载它的方法)。
答案 1 :(得分:0)
Java属性文件几乎总是有一个" .properties"延期。除此之外,它没有可识别的签名。大多数读取此类文件的机制都希望它们是ISO-8859-1文本文件(因为这是在Java 6之前需要的),所以即使检查它们是否只包含ASCII字节也是不够的。
如果您知道文件中包含哪些键,则应使用Properties.load加载它,并检查Properties对象中的那些键。否则,检查文件名中的扩展名可能是您可以做的最可靠的事情。