C#中操作txt,抛出“正由另一进程使用,因此该进程无法访问此文件”
到下述代码的这段:recordFile.Write(pingResult);就抛出异常。写的代码如下:publicvoidrecordInTxt(stringpingRe...
到下述代码的这段:recordFile.Write(pingResult); 就抛出异常。
写的代码如下:
public void recordInTxt(string pingResult) //定义方法
{
DateTime dateTime = new DateTime();
dateTime = DateTime.Now;
string nowTime = string.Format(dateTime.Year + "年" + dateTime.Month + "月" + dateTime.Day + "日" + dateTime.Hour + "_" + dateTime.Minute + "_" + dateTime.Second + "_" + dateTime.Millisecond);
//文本的名字。
string fileName = string.Format(@"E:\myPingResult\{0}.txt", nowTime);//建立文本路径及文本名字
File.Create(fileName); //创建fileName路径的文本
try
{
StreamWriter recordFile = new StreamWriter(fileName,true);//创建streamWrite实例,来用方法
recordFile.Write(pingResult); //把pingResult字符串写入文件中。注:执行到此步骤就出异常。
recordFile.Close();
}
catch
{
MessageBox.Show("出现异常");
} 展开
写的代码如下:
public void recordInTxt(string pingResult) //定义方法
{
DateTime dateTime = new DateTime();
dateTime = DateTime.Now;
string nowTime = string.Format(dateTime.Year + "年" + dateTime.Month + "月" + dateTime.Day + "日" + dateTime.Hour + "_" + dateTime.Minute + "_" + dateTime.Second + "_" + dateTime.Millisecond);
//文本的名字。
string fileName = string.Format(@"E:\myPingResult\{0}.txt", nowTime);//建立文本路径及文本名字
File.Create(fileName); //创建fileName路径的文本
try
{
StreamWriter recordFile = new StreamWriter(fileName,true);//创建streamWrite实例,来用方法
recordFile.Write(pingResult); //把pingResult字符串写入文件中。注:执行到此步骤就出异常。
recordFile.Close();
}
catch
{
MessageBox.Show("出现异常");
} 展开
5个回答
展开全部
将你的File.Create(fileName); //创建fileName路径的文本
改为
using (FileStream fs = File.Create(fileName)){}
//或者就写成
File.Create(fileName).Close();//或者File.Create(fileName).Dispose();
要象这样关闭文件才可以,实际使用的时候很少会有人去用File.Create,一般都是类似这种用法
using(FileStream fs = new FileStream(fileName,FileMode.Create ))
{
using (StreamWriter sw = new StreamWriter(fs, Encoding.Default))
{
//声明数据流文件写入方法
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open)
这个方法打开文件的时候是以只读共享的方式打开的,但若此文件已被一个拥有写权限的进程打开的话,就无法读取了,
因此需要使用
System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open,System.IO.FileAccess.Read,FileShare.ReadWrite);
设置文件共享方式为读写,FileShare.ReadWrite,这样的话,就可以打开了
这个方法打开文件的时候是以只读共享的方式打开的,但若此文件已被一个拥有写权限的进程打开的话,就无法读取了,
因此需要使用
System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open,System.IO.FileAccess.Read,FileShare.ReadWrite);
设置文件共享方式为读写,FileShare.ReadWrite,这样的话,就可以打开了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-08-01
展开全部
出现这个问题的原因是多个进程或线程同时读写文件导致的,必须用共享方式打开文件才行。详情MSDN检索FileShare.ReadWrite。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询