C# 将字节数组写入文件

C# 将字节数组写入文件,c#,.net,C#,.net,我尝试将字节数组写入txt文件,结果是gibrish而不是我的字节 这是我的职责: public bool ByteArrayToFile(string _FileName, byte[] _ByteArray) { try { // Open file for reading System.IO.FileStream _FileStream = new System.IO.FileStream(_FileName, System.IO.F

我尝试将
字节数组
写入
txt文件
,结果是gibrish而不是我的字节

这是我的职责:

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  

您编写的代码看起来还可以,但更简单的解决方案是:

public bool ByteArrayToFile(string fileName, byte[] byteArray)
{
   System.IO.File.WriteAllBytes(fileName, byteArray);
   return true;
}
我尝试将字节数组写入txt文件

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

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

  • 最好对文件流使用
    using
    ,或者在
    finally
    块中调用
    Close()
  • 没有“文本文件”。文本只是一组字节,字节通过编码(ASCII、Unicode、UTF8等)表示为符号。当您写入字节时,系统按原样写入它们,当您使用记事本查看文件时,它会显示编码(读取0x31并显示1,依此类推)
  • 如果您正在尝试编写文本文件,请期待使用该方法

  • 您希望输出是什么样子?如何生成
    \u ByteArray
    ?此外,您的命名约定很奇怪,局部变量应该是
    camelCase
    ,没有下划线。在.Net中,返回bool表示成功/失败也是不受欢迎的。异常应该是用于指示失败的方法。我只想删除try/catch-让任何错误冒泡,直到您能够真正有意义地处理它,即使这只是一个顶级处理程序记录它并退出。您的代码就其目的而言是正确的,请向我们显示
    \u ByteArray
    变量内容。此内容是来自PcapDotNet项目的数据包字节[](packet.buffer return byte[])此内容是来自PcapDotNet项目的数据包字节[](packet.buffer返回字节[])