非正式地,我们大多数人理解,有’二进制’文件(目标文件,图像,电影,可执行文件,专有文档格式等)和’文本’文件(源代码,XML文件,HTML文件,电子邮件等)。
一般来说,你需要知道一个文件的内容,以便能够做任何有用的事情,并形成这个观点,如果编码是’二进制’或’文本’,这并不重要。当然,文件只是存储字节数据,所以它们都是“二进制”和“文本”并不意味着什么,而不知道编码。但是,仍然有用的谈论’二进制’和’文本’文件,但为了避免违反任何人的这个不精确的定义,我会继续使用’scare’引号。
但是,有各种工具可以处理各种各样的文件,在实际情况下,您想根据文件是“文本”还是“二进制”来做不同的操作。一个例子是在控制台上输出数据的任何工具。纯文本’看起来很好,是有用的。 ‘二进制’数据混乱了你的终端,一般没有用看看。 GNU grep至少在确定是否应该输出与控制台匹配时使用此区别。
所以,问题是,你怎么知道一个文件是“文本”还是“二进制”?而进一步限制,你如何告诉一个像Linux的文件系统?我不知道任何文件系统元数据指示一个文件的’类型’,所以问题进一步变成,通过检查文件的内容,我如何判断它是’文本’还是’二进制’?为了简单起见,我们将“文本”限制为可在用户控制台上打印的字符。特别是你将如何实现这一点? (我认为这是隐含在这个网站,但我想这是有帮助的,一般来说,指向现有的代码,这样做,我应该指定),我不是真的可以使用现有的程序,这个。