加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

共享违规路径错误C#

发布时间:2020-12-15 03:52:46 所属栏目:百科 来源:网络整理
导读:这是我的代码: public static TextWriter twLog = null;private int fileNo = 1;private string line = null;TextReader tr = new StreamReader("file_no.txt");TextWriter tw = new StreamWriter("file_no.txt");line = tr.ReadLine();if(line != null){ f
这是我的代码:
public static TextWriter twLog = null;
private int fileNo = 1;
private string line = null;

TextReader tr = new StreamReader("file_no.txt");
TextWriter tw = new StreamWriter("file_no.txt");
line = tr.ReadLine();
if(line != null){
    fileNo = int.Parse(line);
    twLog = new StreamWriter("log_" + line + ".txt");
}else{
    twLog = new StreamWriter("log_" + fileNo.toString() + ".txt");  
}
System.IO.File.WriteAllText("file_no.txt",string.Empty);
tw.WriteLine((fileNo++).ToString());
tr.Close();
tw.Close();
twLog.Close();

我想要做的只是打开一个带有log_x.txt名称的文件,并从file_no.txt文件中取出“x”.如果file_no.txt文件为空,则使日志文件的名称为log_1.txt,并将“fileNo 1”写入file_no.txt.A新程序启动后,新的日志文件名必须是log_2.txt.但是我收到这个错误,我不明白我做错了什么.谢谢帮忙.

解决方法

那么你试图打开文件file_no.txt来读取和写入使用单独的流.这可能无法正常工作,因为文件将被读取流锁定,因此无法创建写入流,您将获得异常.

一个解决方案是首先读取文件,关闭流,然后在增加fileNo之后写入文件.这样一来,文件只能打开一次.

另一种方法是为这样读取和写入访问创建一个文件流:

FileStream fileStream = new FileStream(@"file_no.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.None);

即使假设您不想允许共享读取,对于this question的接受答案似乎也有很好的解决方案.

可能的替代方案
我明白你想在程序启动时创建唯一的日志文件.这样做的另一种方法是:

int logFileNo = 1;
string fileName = String.Format("log_{0}.txt",logFileNo);

while (File.Exists(fileName))
{
    logFileNo++;
    fileName = String.Format("log_{0}.txt",logFileNo);
}

这会增加号码,直到找到日志文件不存在的文件号.缺点:如果你有log_1.txt和log_5.txt,下一个文件不会是log_6.txt,而不是log_2.txt.

为了克服这个问题,您可以使用掩码日志_ *.txt枚举目录中的所有文件,并通过执行一些字符串操作来找到最大的数字.

可能性是无止境的:–D

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读