【问题标题】:Writting to CSV file using LINQtoCSV, puts CR LF at the end of the file使用 LINQtoCSV 写入 CSV 文件,将 CRLF 放在文件末尾
【发布时间】:2023-01-11 17:57:16
【问题描述】:

我正在使用 LINQtoCSV NuGet 将 wifi 数据(ID 和密码)写入 CSV 文件,并且我到达回车行的末尾(图片上的红色矩形)。

.TrimEnd('\r', '\n') 方法能以某种方式帮助我吗?

我的代码:

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();
csvContext.Write(listSettings,"D:\\WIFICRED.CSV",csvFileDescription);

【问题讨论】:

  • 由于该库可能使用 StreamWriter / TextWriter 派生类,因此您可以初始化自己的类并将 TextWriter.NewLine 设置为 Windows 中默认的 "\r\n" 之外的其他内容——不清楚为什么要同时替换回车和换行,不过.文本编辑器会在一行中显示您存储的所有内容。回读也会有问题。你想解决什么问题?
  • 嗨,谢谢你的评论。是的,就像你说的,这没有意义,真的。我只需要摆脱我在图像上标记的最后一个,因为 Iot 模块检测到回车并且不会连接到 WiFi。
  • 您应该发送压缩包(GZipStream 或类似文件或压缩文件或 base64 字符串)。剥离行终止符必然会导致悲伤——但不清楚是什么导致了问题
  • 换行符是“记录结尾”,所以没有它,最后一条记录和文件都是不完整的。你真的想省略它。

标签: c# forms csv linqtocsv


【解决方案1】:

找到了解决方案...如果行尾有 CR/LF 我正在使用此语法...

string myFileData;
myFileData = File.ReadAllText(@"D:CsvFile.csv");
if (myFileData.EndsWith(Environment.NewLine))
{
    File.WriteAllText(@"D:CsvFile.csv", myFileData.TrimEnd(Environment.NewLine.ToCharArray())); 
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 2022-11-02
    • 1970-01-01
    • 2016-01-17
    相关资源
    最近更新 更多