我尝试了 help fopen
,
但是没有解释 t
代表什么。
根据文档(R2009a,Windows):
在UNIX系统中,二进制和文本模式是相同的。
在Windows系统中,二进制和文本模式是不同的。如果您不确定哪种模式最适合您的文件,请使用二进制模式。默认情况下,
fopen
以二进制读取方式打开文件。在二进制模式下,读取和写入操作以相同的方式处理所有字符。在文本模式下:
读取操作遇到回车符后跟换行符会将回车符从输入中删除。
写入操作在任何换行符之前插入一个回车符。
UNIX版本(R2009b)还补充道(在doc fopen
中):
为了获得更好的性能,请不要使用文本模式。
与PHP和其他语言类似,MATLAB中的t
确实代表“文本”模式;但是,其含义略有不同。
在MATLAB中,如果您以文本模式打开文件,则会在处理或操作行之前从输入中剥离行尾结束符,然后再将其添加到输出中;二进制模式使用b
表示,不执行此类换行符剥离操作。
请参阅fopen参考资料。
\r\n
的实例在读取时被替换为简单的 \n
,并且在写入操作中发生相反的情况。我提供的文档暗示了这一点;而 @mtrw 提供的文档则明确指出了这一点。 - Tim\r
字符(回车符或CR
)通常仅出现在“Windows风格”的行尾中(由\r\n
或CRLF
组成)。Unix行尾仅包含\n
(换行符或LF
)。文本模式适用于任何地方 - 在Unix平台上谈论它没有意义。 - Tim要以文本模式打开文件,请将字母“t”附加到权限,例如“rt”或“wt+”。为了获得更好的性能,请不要使用文本模式。在Windows系统中,在文本模式下,以下规则适用:
读取操作遇到回车符后跟随换行符('\r\n')会从输入中删除回车符。
写入操作在输出中的任何换行符之前插入回车符。
这种额外的处理对于大多数情况来说是不必要的。所有MATLAB导入函数和大多数文本编辑器(包括Microsoft Word和WordPad)都将'\r\n'和'\n'作为换行序列识别。但是,当您创建供Microsoft记事本使用的文件时,请在每行末尾添加'\r\n'。有关示例,请参见fprintf。
从PHP文档中窃取的[是的,这是一种不同的语言,但我们正在谈论filemode参数,所以不应该有任何区别]
Windows提供了一个文本模式翻译标志('t'),在处理文件时将\n透明地转换为\r\n。相反,您也可以使用“b”来强制二进制模式,这将不会翻译您的数据。要使用这些标志,请将“b”或“t”指定为模式参数的最后一个字符。
....
为了提高可移植性,强烈建议您重新编写使用或依赖于“t”模式的代码,以便使用正确的行尾和“b”模式。