Streamwriter将字符添加到第一行

问题描述 投票:1回答:1

我在c#中做了一些相当简单的事情,将一个字符串列表写入文本文件。我的写子是:

public static bool TextToFile(string fileName, List<string> inString) {
    if (!Directory.Exists(Path.GetDirectoryName(fileName)))
        Directory.CreateDirectory(Path.GetDirectoryName(fileName));
    try {
        if (File.Exists(fileName))
            File.Delete(fileName);

        const int BufferSize = 65536;  // 64 Kilobytes
        using (StreamWriter sw = new StreamWriter(fileName, true, Encoding.UTF8, BufferSize)) {
            if (inString.Count > 0) {
                foreach (string str in inString) {
                    sw.WriteLine(str);
                }
            }
            else
                sw.WriteLine("");
        }
        return true;
    }
    catch {
        return false;
    }
}

我在第一行的开头得到了额外的东西。它没有在常规文本编辑器中显示,但是当我在ultraedit中打开并进入十六进制模式时,我看到了:

我读取文本文件的程序确实看到了这些字符,并将其混淆了。我的字符串列表非常干净。我有时写100 MB文本文件,所以我将缓冲区设置为64k,但我尝试将其保留为默认值,但结果相同。我在win7 64位,使用VS 2013。

c# .net streamwriter
1个回答
0
投票

我有这个确切的问题,并且(感谢对这个问题的评论)将这些字符识别为Byte Order Mark然后允许我更改编码以使用此代码排除BOM:

using (StreamWriter sw = new StreamWriter(fileName, true, new UTF8Encoding(false), BufferSize))
© www.soinside.com 2019 - 2024. All rights reserved.