我正在写一个应用程序,我需要确定从用户提供的文件是否是文本,因为我正在执行搜索。如何确定文件是二进制还是文本?
我不是基于扩展名,因为我想在源代码文件中搜索例如,或任何其他具有文本内容(即使是不知名的扩展名)的文件。
有没有办法确定文件是否是文本?
我正在写一个应用程序,我需要确定从用户提供的文件是否是文本,因为我正在执行搜索。如何确定文件是二进制还是文本?
我不是基于扩展名,因为我想在源代码文件中搜索例如,或任何其他具有文本内容(即使是不知名的扩展名)的文件。
有没有办法确定文件是否是文本?
感谢大家提供的解决方案! 我刚刚发现了一个框架,似乎很好地完成了这项工作!
我在这里留下一个可供参考的链接:https://github.com/aidansteele/MagicKit
没有办法确定。但请注意,大多数控制字符 不会出现在ASCII文件中。 您可以通过制作大部分ASCII 控制字符的子集来做出相当好的猜测。然后计算子集中文件中字符数为 的字符数,ASCII文件的计数应该为零。 但归根到底你必须证明一个否定的,这是一件麻烦的事情。
您需要打开并读取数据。
对于ASCII文本文件,这意味着检查字符是否在可打印范围内。
对于UTF文本文件,您可能需要先阅读BOM(字节顺序标记)以确定编码,然后再读取文件的其余部分。