使用LINQtoCSV写入CSV文件末尾出现CR LF,TrimEnd方法是否有效?
问题解答
直接用.TrimEnd('\r', '\n')没法解决这个问题——因为你当前是通过csvContext.Write直接把数据写入文件,没有机会在它完成写入后对输出内容调用这个方法。
给你两个靠谱的解决办法:
方法1:修改LINQtoCSV的配置(推荐)
LINQtoCSV的CsvFileDescription类里有个LastLineHasNewLine属性,默认是true,会在文件最后一行末尾添加换行符。把它设为false就能直接避免这个问题:
var csvFileDescription = new CsvFileDescription { FirstLineHasColumnNames = true, SeparatorChar = ',', LastLineHasNewLine = false // 新增这一行,禁用末尾换行 };
方法2:先写入内存流再处理内容
如果你的LINQtoCSV版本没有LastLineHasNewLine属性,可以先把内容写入内存流,再对字符串做Trim处理后写入文件:
var listSettings = new List<Wifi_User> { new Wifi_User { SSID = "id_112", password = "guest" } }; var csvFileDescription = new CsvFileDescription { FirstLineHasColumnNames = true, SeparatorChar = ',' }; var csvContext = new CsvContext(); using (var memoryStream = new MemoryStream()) { // 先写入内存流 csvContext.Write(listSettings, memoryStream, csvFileDescription); memoryStream.Position = 0; // 将流转为字符串并去除末尾的换行符 using (var streamReader = new StreamReader(memoryStream)) { string content = streamReader.ReadToEnd().TrimEnd('\r', '\n'); // 写入文件 File.WriteAllText("D:\\WIFICRED.CSV", content); } }
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

