C#读取被进程占用的文件

最近所做的一个项目中,需要实现一个读取日志文件的功能,开始我使用的读取日志文件的方法如下 private  void GetLogThread()    {        try       {            string filename = AppDomain.CurrentDomain.BaseDirectory + "log//" +cmblogfile.Text;            using (StreamReader sr = new StreamReade(filename))            {                rtblog.Text = sr.ReadToEnd();                sr.Close();            }        }        catch (Exception err)        {            MessageBox.Show(err.Message, "错误",MessageBoxButtons.OK,MessageBoxIcon.Error);        }    }   在读取历史日志文件时,没有问题,但是在读取当前正在写的日志文件时,就出现问题了。
出现以下错误:
文件“F:/AutoUpdater/log/logfile20090422.txt”正由另一进程使用,因此该进程无法访问该文件
logfile20090422.txt文件是系统中的日志文件,每天一个文件,不定时的会进行写入。
解决方案:
使用以下代码
private  void GetLogThread()    {        try       {   stringfilename=AppDomain.CurrentDomain.BaseDirectory+ "log//"+cmblogfile.Text;            FileStream fs = new FileStream(filename,FileMode.Open,FileAccess.Read,FileShare.ReadWrite);            StreamReader sr = new StreamReader(fs,System.Text.Encoding.Default);            rtblog.Text = sr.ReadToEnd();            sr.Close();            fs.Close();        }        catch (Exception err)        {            MessageBox.Show(err.Message, "错误",MessageBoxButtons.OK,MessageBoxIcon.Error);        }    }   总结:
这样的情况,不单要与只读方式打开txt文件,而且,需要共享锁。还必须要选择flieShare方式为ReadWrite。因为随时有其他程序对其进行写操作。
阅读更多
文章标签: c#
个人分类: C#
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭