生成文本文件时的EOF标记?

时间:2009-06-26 00:30:45

标签: .net ascii text-files

当我以编程方式生成文本文件时,是否应该在文件末尾插入ASCII EOF标记(十进制值26)?

.NET编程语言是否自动执行此操作?

2 个答案:

答案 0 :(得分:5)

没有。 EOF是在读取文件时由OS的IO功能产生的。它不应存储在现代系统的文件中。

答案 1 :(得分:2)

^Z EOF标记没有理由(并且已经很久没有了) - 它是CP / M的保留,它不支持文件大小的确切长度在目录中 - 文件大小是以128字节块的数量表示的,因此要在非128字节边界上结束文件,您必须使用EOF字符。

由于MS-DOS的早期版本受到CP / M的严重影响(并且微软希望CP / M程序能够轻松移植),因此会议陷入困境。

您的程序应该打开具有相应属性的文本文件,以便操作系统和/或语言运行时在看到^Z时发出EOF信号,以防您遇到使用该约定的文件。但是没有必要再写一个了。

一个可能的例外是,如果你有一个二进制文件,但想要在它的开头添加一些文本,然后是^Z,那么你的数据。如果有人将它转储到控制台,它会说出一些智能而不是喷出垃圾的东西。这样做没有太多理由,但我很少见到这一点。

来自维基百科(http://en.wikipedia.org/wiki/CP/M):

  

文件大小指定为数字   128字节记录(直接   对应于磁盘扇区   8英寸驱动器)由文件占用   磁盘。一般没有   支持指定byte-exact的方法   文件大小。文件的当前大小   保存在文件的文件中   控制块(FCB)由操作   系统。由于很多申请   程序(如文本编辑器)更喜欢   处理文件作为序列   字符而不是序列   记录,按惯例文本文件   以control-Z字符终止   (ASCII SUB,十六进制1A)。   确定文本文件的结尾   因此涉及检查最后一个   要找到的文件的记录   终止控制-Z。这也意味着   插入一个control-Z字符   通常有一个文件的中间   截断文本的效果   文件的内容。