File io 文本文件输入/输出期间的行尾转换

File io 文本文件输入/输出期间的行尾转换,file-io,rust,newline,File Io,Rust,Newline,如何将包含换行符的字符串(&str和String)写入文本文件 在C中,您可以通过fopen标志、“w”或“wb”在按原样编写文本或将'\n'转换为操作系统的适当行尾符号之间进行切换。例如,在Windows中,“\n”在I/O期间转换为“\r\n”” 我怎样才能做到这一点与生锈?我在std::fs::File中找不到相应的API标准库中没有这样的API(不过可能有一个用于此的板条箱)。将行写入文件的最简单方法是使用宏,它只对换行使用\n Rust开发人员可能认为它不够有用,因为我很确定现在的\r

如何将包含换行符的字符串(
&str
String
)写入文本文件

C
中,您可以通过
fopen
标志、
“w”
“wb”
在按原样编写文本或将
'\n'
转换为操作系统的适当行尾符号之间进行切换。例如,在Windows中,“\n”在I/O期间转换为“\r\n””


我怎样才能做到这一点与生锈?我在
std::fs::File
中找不到相应的API标准库中没有这样的API(不过可能有一个用于此的板条箱)。将行写入文件的最简单方法是使用宏,它只对换行使用
\n

Rust开发人员可能认为它不够有用,因为我很确定现在的
\r\n
仅用于Microsoft记事本兼容性

曾经有一个与在Windows上不使用
CRLF
相关的
write
,但得出的结论是:

默认情况下,原始
io::File
可能不会处理它,而是需要一个包装器


(注意:自Rust 1.0以来,它不再是
io::File
,而是
fs::File

您希望转换的范围有多广?从内存中所有可能的行尾到文件中的系统行尾?您是否希望在读取文件时执行相反的操作?Rust不像C那样具有“文本模式”文件,因此您有责任在写入数据之前或读取数据之后执行此操作。例如,在Windows中,“\n”在I/O期间转换为“
”\r\n”
。如果您想从非Windows写入“Windows”文件,或者从非Windows写入“Windows”文件,该怎么办?基于当前平台设置行尾太不可靠了,这不是一个好主意。您是说Windows中的所有其他应用现在都只使用“\n”来终止文件吗?