将Byte数组写入文件

时间:2014-03-07 10:32:36

标签: c# .net

我尝试将byte array写入txt file,结果是乱码而不是我的字节

这是我的功能:

public bool ByteArrayToFile(string _FileName, byte[] _ByteArray)
{
   try
   {
      // Open file for reading
      System.IO.FileStream _FileStream = 
         new System.IO.FileStream(_FileName, System.IO.FileMode.Create,
                                  System.IO.FileAccess.Write);
      // Writes a block of bytes to this stream using data from
      // a byte array.
      _FileStream.Write(_ByteArray, 0, _ByteArray.Length);

      // close file stream
      _FileStream.Close();

      return true;
   }
   catch (Exception _Exception)
   {
      // Error
      Console.WriteLine("Exception caught in process: {0}",
                        _Exception.ToString());
   }

   // error occured, return false
   return false;
}

结果:

"3DUf " E  _Xu  €ˆ‏
=2‡¬1p% n Kפ C  

2 个答案:

答案 0 :(得分:5)

您的编写代码看起来不错,但更简单的解决方案:

public bool ByteArrayToFile(string fileName, byte[] byteArray)
{
   System.IO.File.WriteAllBytes(fileName, byteArray);
   return true;
}
  

我尝试将字节数组写入 txt文件

在这种情况下,在某些编码中,字节数组应该是文本的正确表示。

我怀疑在生成byteArray的步骤中存在一些编码问题。

答案 1 :(得分:0)

  1. 最好将using用于文件流,或在Close()块中调用finally
  2. 没有“文本文件”。文本只是字节集,字节表示为带编码的符号(ASCII,Unicode,UTF8等)。当您编写字节时,系统按原样写入它们,当您使用记事本查看文件时,它会使用编码显示它(它显示为0x31并显示1,依此类推)。
  3. 如果您要编写文本文件,请期待File.WriteAllText()方法