繁体   English   中英

BinaryWriter覆盖现有文件C#

[英]BinaryWriter to overwrite an existing file c#

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

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

我想问问您,如果此名称的文件已经存在,则此方法是否用新值覆盖文件? 如果该文件已经存在但具有旧值,我需要覆盖该文件。

不,它会追加行,您已经通过编写FileMode.Append指定了它,应该指定FileMode.Create来追加行(如果不存在,则创建一个新文件)

MSDN FileMode.Create

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

哪里作为FileMode.Append

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

所以,你应该使用这个

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM