C#里面的文件锁?

liutaoyue 2007-01-22 02:57:45
现在有个文件Data.txt文件,有另外一个程序在定时往里面写入数据,而我要做的就是定时从这个文件中读取数据! 这牵涉到一个文件锁的问题,我用的是FileStream流串一行一行读的,但是每当人家那个程序往里面写入数据的时候,我这边肯定会报错:"进程无法访问×××文件,因为被其他进程在调用",我想问问C#中是否有文件锁之类的东西,能知道该文件正在被使用,我可以Sleep几秒钟在取数啊??????
谢谢各位达人了!
...全文
855 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liutaoyue 2007-01-22
  • 打赏
  • 举报
回复
那个写入程序是用VB写的,就是一条普通的Print命令一行一行写入数据。 应该没加什么锁吧。看来还真得用try..catch了,晕!
谢谢各位了!!
灰太狼 2007-01-22
  • 打赏
  • 举报
回复
首先你要确定调用文件的那个程序是否使用了锁,如果没有使用锁,那么你程序中使用文件锁也就没有什么意义了,只能用try catch 来做了,如果对方程序使用了文件锁的话,你也用文件锁就可以了,关于锁你可以参看http://blog.csdn.net/tjvictor/archive/2007/01/20/1488290.aspx
huheng_0_0 2007-01-22
  • 打赏
  • 举报
回复
public void Read()
{
if (!File.Exists(path))
{
// 如果文件不存在,处理过程
}
else
{
try
{
// 读取文件中的内容
}
catch (Exception e)
{
Thread.Sleep(10);
Read();
}
}
}
viena 2007-01-22
  • 打赏
  • 举报
回复
写一个此文件的专用操作类,操作代码放在lock语句块里面~
liutaoyue 2007-01-22
  • 打赏
  • 举报
回复
回复2楼:
try{}catch{}当然不是什么好的方法,这样的话,所有的程序中遇到的问题都可以用这玩意来处理,明显失去了意义。 谢谢了! 我是个菜鸟,不过觉得这个问题好像应该不是很难吧。
来个高人稍微指点一下这个很常见的问题撒! ^_^
liutaoyue 2007-01-22
  • 打赏
  • 举报
回复
什么意思? 那个写入数据的程序我是不可能去改人家的,我要做的就是从这个文件里面读数,但是要和他写数时错开。
huheng_0_0 2007-01-22
  • 打赏
  • 举报
回复
1.如果写文件的工程是你自己掌控的,你可以在那里面设置一个,写的时候,别人可读!这样你的读就没问题了
2.如果你无法控制写工程,那么你可以用try...catch来处理,如果没人写,正常读出,如果有人写,你不能读,进入catch块,然后先Thread.Sleep(millisecond);然后在去检查.
只是一个建议,等待高手得指点
noky 2007-01-22
  • 打赏
  • 举报
回复
用MemoryStream吧,当MemoryStream的东西写道一定的容量的时候在写到Data.txt文件里。你读取文件信息从MemoryStream中读取吧!

110,533

社区成员

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

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

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