要在我的掌上电脑的内存上写一张图片,请使用以下代码:
pic = (byte[])myPicutureFromDatabase;
using (var fs = new BinaryWriter(new FileStream(filepath, FileMode.Append, FileAccess.Write)))
{
fs.Write(pic);
fs.Flush();
continue;
}
我想问你这个方法是否用新值覆盖文件,如果具有此名称的文件已经存在或者什么也不做,因为已存在此文件? 我需要覆盖该文件,因为该文件已存在,但具有旧值。
答案 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;
}