Java 如何有效地确定文件类型?
我正在使用的程序查看各种ASCII文本文件并进行一些处理。为了知道如何处理事情,需要知道文件是否Java 如何有效地确定文件类型?,java,Java,我正在使用的程序查看各种ASCII文本文件并进行一些处理。为了知道如何处理事情,需要知道文件是否 - IS_EMPTY // done - IS_JSON // done via parsing, using gson - IS_XML // done via parsing, using dom4j - IS_PROPERTIES - IS_SCRIPT 我想知道是否有一种有效的方法来确定文件是否属于类型属性,而不必读取每一行来查
- IS_EMPTY // done
- IS_JSON // done via parsing, using gson
- IS_XML // done via parsing, using dom4j
- IS_PROPERTIES
- IS_SCRIPT
我想知道是否有一种有效的方法来确定文件是否属于类型属性,而不必读取每一行来查看它是否包含Key=Value
对
此外,是否有一种有效的方法来确定文件是否为shell脚本
是否有任何解析器可用于检查此问题?属性#加载用于解析属性文件的
。除了阅读每一行,看看它是否符合语法(除了Key=Value
)之外,它没有什么不同。如果格式无效,则引发异常
Shell脚本?不要认为这是可能的,因为它们可以是任何语言或不同的shell。我只需检查shebang的第一行。属性#加载
以解析属性文件。除了阅读每一行,看看它是否符合语法(除了Key=Value
)之外,它没有什么不同。如果格式无效,则引发异常
Shell脚本?不要认为这是可能的,因为它们可以是任何语言或不同的shell。我只想检查shebang的第一行。您可以尝试这个整洁的库:您可以尝试这个整洁的库:获取shell脚本: 检查Shebang之后的文本是否指定了shell,例如 !/bin/bash是shell !/bin/sh是shell 。 . !/usr/bin/ruby不是shell !/usr/bin/perl不是shell 否则,脚本语言将被淘汰 . 对于XML也是一样,它应该有一个doctype行,如
对于shell脚本:
检查Shebang之后的文本是否指定了shell,例如
!/bin/bash是shell
!/bin/sh是shell
。
.
!/usr/bin/ruby不是shell
!/usr/bin/perl不是shell
否则,脚本语言将被淘汰
.
对于XML也是一样,它应该有一个doctype行,如
如果您的程序要求输入文件格式良好且不是混合类型,那么我建议您将JSON和XML IMPL替换为以下内容:
然后,您可以倒带输入流并将其交给您的解析库读取(这是方便的地方)如果您的程序要求输入文件格式良好,而不是混合类型,那么我建议用以下内容替换JSON和XML impl:
然后,您可以倒带输入流并将其交给您的解析库阅读(这是方便的地方)这篇博文包含一些库的链接,用于识别文件类型: jmimemagic看起来可以实现您想要的功能(包括shell脚本):
这篇博文包含几个用于识别文件类型的库的链接: jmimemagic看起来可以实现您想要的功能(包括shell脚本):
我假设没有元数据可用?或者不同类型的文件可以有不同的文件扩展名?没有元数据,正确。我不想依赖扩展名,经验表明它们不可靠。我假设没有元数据可用?或者不同类型的文件可以有不同的文件扩展名?没有元数据,正确。我没有想要依赖扩展,经验表明它们是不可靠的非常棒的库,但没有我要找的库。+1非常好的参考尽管很抱歉,它真的无法发现shell sript和.properties。当我尝试时,我对它能做的事情感到不知所措,所以我只是假设:)肯定是非常棒的库,但n我没有我要找的东西。尽管我是