我有两个问题:
1)如果我有一个包含例如一些数字的文件,例如:
4 5 6 7
或者一些像这样的词:
home sun cat dog
我可以将它映射到内存区域吗?或者它只能用于二进制文件?
2)即使文件很小,映射也有用吗?
谢谢你。
1)所有文件都是二进制文件......但其中一些也可以被认为更容易使用。(也就是说,是的,您也可以映射文本文件,但内存将包含文本,而不是数字。)
2)映射是否有用,具体取决于您正在使用它做什么/将其映射到内存的原因是什么。如果您的理由是高效阅读,那么您可能对小文件一无所获(也一无所获)。如果您的原因是简单地通过代码直接访问文件,甚至不知道它正在处理文件,那么即使对于小文件,它当然也很有用。
是的,您可以将其映射到内存区域。它是否有用取决于您的用例。
您似乎对什么是二进制文件有点困惑……对于计算机而言,所有文件都是“二进制”的,因为它们只是字节列表。我们所说的非二进制文件通常是人类可读的文件,这意味着它们包含的字节值显示为字母、数字和其他可读符号。
然后,在某些操作系统(Windows)上,如果您以非二进制形式打开文件,则在向文件写入换行符('\n')时会进行一些特殊处理。发生的情况是,实现在换行符之前添加了一个返回字符('\r'),因为在 Windows 上,行尾是“\r\n”,而不是像其他操作系统上的“\n”。请注意,'\n' 和 '\r' 只是像 'a' 或 'b' 或 '!' 这样的值 是,它们都在 0-255 范围内(可存储在无符号字符中的值)。
通常所有文件都映射到内存中,以便于查看或处理。从内存操作系统将数据发送到 CPU 或其他硬件设备。无论文件大小如何,都需要映射。