在文件末尾追加字节数组

人气:902 发布:2022-10-16 标签: file c# filestream filewriter offset

问题描述

我要将字节数组追加到现有文件。它必须位于文件的末尾。我已经可以设法在文件的开头写了。(由于堆栈溢出;))。

代码:

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;

}

从此处获取:

Link

但我需要它放在文件末尾

提前谢谢。

找到解决方案:

FileStream writeStream;
        try
        {
            writeStream = new FileStream(_FileName, FileMode.Append,FileAccess.Write);
            BinaryWriter writeBinay = new BinaryWriter(writeStream);
            writeBinay.Write(_ByteArray);
            writeBinay.Close();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }

推荐答案

不使用System.IO.FileMode.Create,而使用System.IO.FileMode.Append-它正好执行您需要的操作。

来自MSDN:

上的FileMode Enumeration 追加:如果文件存在,则打开该文件并查找到文件末尾,或创建一个新文件。这需要FileIOPermissionAccess.Append权限。FileMode.Append只能与FileAccess.Write一起使用。尝试查找到文件结尾之前的位置会引发IOException异常,而任何读取尝试都会失败并引发NotSupportedException异常。

623