贝网博客

我的分类
流水记事
源码下载
Asp.net
其它
数据库
Javascript
.Net技术
我的相册
友情链接
博客园
CSDN博客
Start0
最新回复
嗷嗷的cCC
fasdfasdf
[:..
lz这个东西好厉害,我..
哈哈,好照片
不错,以前一直用黄色..
终于找到支持ff的修正..
终于找到支持ff的修正..
新鲜性
看看,试试,好不好使。
分类 =》.Net技术
FileMode.OpenOrCreate的意义和使用误区
发表于:2012-11-06 17:22:53

今天看到,写入文件的代码如下:
using (FileStream fs = new FileStream(@"c:\1.tmp", FileMode.OpenOrCreate, FileAccess.Write))
{
    fs.Write(arr, 0 ,arr.Length);
}
对这个OpenOrCreate有点疑义,查了一下msdn,解释如下:
 

看晕了,我以前一直是使用FileMode.Create,这个枚举的解释:

也就是说Create,如果文件存在,会覆盖,但是OpenOrCreate好像也是覆盖,到底是不是呢?经过测试,发现,OpenOrCreate不是覆盖,而是重写,举个例子,如果文件内容是:123456789,如果使用OpenOrCreate枚举写入abc,那么文件的内容会变成:abc456789

也就是说,OpenOrCreate是打开文件,并把指针指向文件头,重写里面的字符,如果写入的数据长度比文件数据长度小,那么文件的后面那部分数据会保持旧数据不变,而不会扔掉.

在我的实际应用中,OpenOrCreate这个枚举好像意义不大,也许在别的地方确实有用途吧,总之,一定要搞清楚这2个枚举的区别,千万不要用错

发表评论
名称(*):
邮箱:
正文:

©2008 Beinet.cn 版权所有