为什么文本文件以Ctrl+Z结尾
今天是一则老故事
实际上,文本文件并不需要以Ctrl+Z结尾,但是,这一转换还存存在于某些命令中。
(尽管,幸运的是,这些命令,在现在看来,都是很小的,不怎么影响使用)
故事要回到CP/M操作系统所存在的上古时代,CP/M是一款操作系统的名字,后来它被MS-DOS所取代。为什么这么说?因为英特尔的8086处理器可以看做是8080的取代者,那么,为8086处理器所开发的操作系统,也应该是为8080开发的操作系统的取代者。
在CP/M操作系统中,文件以扇区的形式进行存储,每个扇区的大小为128个字节。如果你的文件为64个字节,则这个文件可以完全保存在一个扇区中。一个特殊的地方是,操作系统是以一个文件占用的扇区数量来表示文件的大小的,所以,如果你的文件不是128的整数倍,则你需要采用某些方式来表达文件真正的结尾在哪个地方。
这个时候,Ctrl + Z这种技法就诞生了。
按照转换惯例,文件所在的最后一个扇区的未使用空间都会被Ctrl+Z这一字符填充。同时,为了保持对CP/M的兼容,MS-DOS做了Ctrl+Z的转换。所以当你从一台CP/M系统传输一个文件到新的PC时,你就不会碰到文件结尾的垃圾数据了。
Ctrl + Z已经不再被使用很多年了。MS-DOS系统是以字节为单位来记录文件的大小,而不是以扇区数量。但是这一转换还是会存在一些古老的DOS命令中,例如”COPY”。
总结
故事是老故事,但是它确确实实在历史长河中发生过,向这些上古系统的开发者,敬一杯酒。
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Why do text files end in Ctrl+Z?》
相关推荐
- VS 17.5 预览版2:/Gw链接开关的标准一致性改进
- Posted on 01月12日
- 关于那些没有标准答案的问题一览
- Posted on 12月25日
- 对话框管理器第四章:对话框消息循环
- Posted on 08月02日
- 小技巧:解决VS2010因为”将来时间”而无法增量编译的问题
- Posted on 07月29日
评论已关闭。