请教:filestream读一个正在被使用的文本是否安全?

livejt 2009-04-04 04:31:00
我用filestream读一个文件,这个文件同时正在被另外的程序读写(间断的,不是一直在读写)。
用了下面的语句
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

然后用seek方法从指定位置开始读取文本,最后调用fs.Dispose();


这样是否安全?自己测试了一下,没有出问题,但还是想请各位前辈指点。
多谢。
...全文
85 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaily 2012-05-17
  • 打赏
  • 举报
回复
如果只有A写入, B只是做读取操作,那么就不会有问题。
fskjb01 2009-04-04
  • 打赏
  • 举报
回复
如果B程序只是读数据的话应该没有问题吧,因为只有A在写LOG文件,这样应该不会有数据不一致的情况出现!!
livejt 2009-04-04
  • 打赏
  • 举报
回复
如果用filestream.lock()的话,只是锁定文本中的一个区域。
我现在读的这个文本,他只是不断地追加内容到末尾,锁定了好像没有意义啊。
livejt 2009-04-04
  • 打赏
  • 举报
回复
我把我问题的背景在说清楚点。

有一个程序A在计算,每到一定的程度会向log文件写文本。我自己编一个程序B想实时读取文本内容。就是A写什么,B就读什么。
如果用streamreader的话,由于A已经打开了log文本,所以无法使用。

我看了filestream类,好象有这种share读的功能,试了试发现可以实现。就像楼上几位所说,我也感觉这个好像有点问题。

lock unlock我再看看,我学机械的,本科学过一点C。是不是我的问题很低级?多谢各位的指导,我再试试看。
livejt 2009-04-04
  • 打赏
  • 举报
回复
那我要读文件中的内容,有什么办法??

如果filestream不行,那这个函数应该怎么用?


public FileStream(
string path,
FileMode mode,
FileAccess access,
FileShare share
)


参数
path
类型:System..::.String

当前 FileStream 对象将封装的文件的相对路径或绝对路径。

mode
类型:System.IO..::.FileMode

FileMode 常数,确定如何打开或创建文件。

access
类型:System.IO..::.FileAccess

FileAccess 常数,它确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件,则 CanSeek 为 true。

share
类型:System.IO..::.FileShare

FileShare 常数,确定文件如何由进程共享。

此构造函数被授予对文件的读/写访问权限,并且以共享“读”访问的模式打开(即此进程或另一进程打开文件进行写入的请求将失败,直到 FileStream 对象已关闭;但读尝试将成功)。缓冲区大小设置为默认大小 8192 字节 (8 KB)。
wuyq11 2009-04-04
  • 打赏
  • 举报
回复
数据不准确,应该通过锁机制确定使用
Crazy_Xia 2009-04-04
  • 打赏
  • 举报
回复
楼主既然想到来问了,说明楼主还是知道是有问题的
sayoath 2009-04-04
  • 打赏
  • 举报
回复
如果你只以控制同时只有一个人在读写
例如:
application.lock() unlock()
的两个法。。
一个时间只能让一个用户更改里边的值
only_lonely 2009-04-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
没有出问题是因为没有碰到问题,这种非独占模式很容易造成数据不一致的问题,导致你或者他人保存的数据丢失
[/Quote]
这话经典!
zhaowt_2008 2009-04-04
  • 打赏
  • 举报
回复
应该不行,这样不能保证数据的完整性和一致性
bdmh 2009-04-04
  • 打赏
  • 举报
回复
没有出问题是因为没有碰到问题,这种非独占模式很容易造成数据不一致的问题,导致你或者他人保存的数据丢失

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧