在文件末尾附加字节数组

时间:2013-03-30 19:08:48

标签: c# file filestream offset filewriter

我想将字节数组附加到现有文件中。 必须位于文件的末尾。我已经设法在文件的开头写了。 (感谢stackoverflow;))。

代码:

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());
        }

1 个答案:

答案 0 :(得分:4)

不使用System.IO.FileMode.Create,而是使用System.IO.FileMode.Append - 它完全符合您的需要。

来自MSDN上的FileMode Enumeration

  

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