BinaryWriter覆盖现有文件c#

时间:2013-07-31 10:08:37

标签: c# jpeg binarywriter

要在我的掌上电脑的内存上写一张图片,请使用以下代码:

pic = (byte[])myPicutureFromDatabase;
using (var fs = new BinaryWriter(new FileStream(filepath, FileMode.Append, FileAccess.Write)))
{
    fs.Write(pic);
    fs.Flush();
    continue;
}

我想问你这个方法是否用新值覆盖文件,如果具有此名称的文件已经存在或者什么也不做,因为已存在此文件? 我需要覆盖该文件,因为该文件已存在,但具有旧值。

2 个答案:

答案 0 :(得分:1)

不附加行,您已通过编写FileMode.Append指定了行,您应指定FileMode.Create以附加行(或创建新文件(如果不存在))

答案 1 :(得分:1)

来自MSDN FileMode.Create

  

指定操作系统应创建新文件。如果   文件已存在,将被覆盖。这需要   FileIOPermissionAccess.Write权限。 FileMode.Create是等效的   要求如果文件不存在,请使用CreateNew;   否则,请使用截断。如果文件已存在但是隐藏了   文件,抛出一个UnauthorizedAccessException异常。

FileMode.Append的位置

  

打开文件(如果存在)并搜索到文件的末尾,或者   创建一个新文件。这需要FileIOPermissionAccess.Append   允许。 FileMode.Append只能与。一起使用   FileAccess.Write。试图在结束之前寻找一个位置   file抛出IOException异常,任何读取尝试都失败   并抛出NotSupportedException异常。

所以,你应该使用这个

pic = (byte[])myPicutureFromDatabase;
using (var fs = new BinaryWriter(new FileStream(filepath, FileMode.Create, FileAccess.Write)))
       {
          fs.Write(pic);
          fs.Flush();
          continue;
        }