【问题标题】:Why Empty Text File Contains 3 bytes?为什么空文本文件包含 3 个字节?
【发布时间】:2013-09-02 04:55:57
【问题描述】:

我在 vs2010 的 C# 项目中使用了一个文本文件。我添加到解决方案并将其“复制输出”设置为“始终复制”。当我使用以下代码时,它会给我前导三个字节或 utf8 一个字节的文本结果。我查看了 windows 资源管理器的文件属性,它的大小显示为 3 个字节。

public static string ReadFile(string fileName)
        {
            FileStream fs = null;
            try
            {
                fs = new FileStream(fileName, FileMode.Open);
                FileInfo fi = new FileInfo(fileName);
                byte[] data = new byte[fi.Length];
                fs.Read(data, 0, data.Length);
                fs.Close();
                fs.Dispose();
                string text = Encoding.ASCII.GetString(data);
                return text;
            }
            catch (Exception)
            {
if(fs != null)
{
    fs.Close();
    fs.Dispose();
}
return string.Empty;
            }
        }

为什么会像上面这样?如何在没有 StreamReader 类的情况下读取文本文件?

任何帮助,代码将不胜感激。

【问题讨论】:

  • 问题在于如何创建空文本文件。这就是添加这些字节的原因。

标签: c# .net file text


【解决方案1】:

所以,您看到的这三个字节是我猜测的 unicode 文件的 byte order marker。对于 UTF-8,它是三个字节。

您可以通过使用不带签名的 UTF-8 保存文件来避免这些情况。

【讨论】:

  • 我在保存时使用的是 vs2010。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
相关资源
最近更新 更多