我想这里的每个人都熟悉这句谚语,即所有文本文件都应该以换行符结尾。我已经知道这个“规则”很多年了,但我一直在想——为什么?


当前回答

天啊,这是个人风格和观点的问题。

在过去,我没有写那句新语。保存的字符意味着14.4K调制解调器的速度更快。

稍后,我放置了换行符,以便使用shift+向下箭头更容易选择最后一行。

其他回答

假设文件正在被处理,而文件仍由另一个进程生成。

可能与此有关?指示文件已准备好处理的标志。

多年来,我自己也在想这个问题。但我今天遇到了一个很好的理由。

想象一个每行都有记录的文件(例如:CSV文件)。电脑在文件末尾写记录。但它突然坠毁了。天哪,最后一行完成了吗?(情况不太好)

但是如果我们总是终止最后一行,那么我们就会知道(只需检查最后一行是否终止)。否则,为了安全起见,我们可能不得不每次都放弃最后一行。

很可能只是一些解析代码希望它在那里。

我不确定我是否会认为这是一条“规则”,而且这肯定不是我虔诚地遵守的。最明智的代码将知道如何逐行解析文本(包括编码)(任何行结尾的选择),最后一行是否有换行符。

的确,如果你以一条新的线结束:EOL和EOF之间(理论上)是否有一条空的最终线?一个值得思考的。。。

天啊,这是个人风格和观点的问题。

在过去,我没有写那句新语。保存的字符意味着14.4K调制解调器的速度更快。

稍后,我放置了换行符,以便使用shift+向下箭头更容易选择最后一行。

一个单独的用例:当文本文件受版本控制时,提交卫生。

如果将内容添加到文件末尾,则先前是最后一行的行将被编辑为包含换行符。这意味着,打开文件以了解该行最后一次编辑的时间将显示换行符添加,而不是您实际希望看到的提交。

(该示例特定于git,但同样的方法也适用于其他版本控制系统。)