【发布时间】:2018-07-24 12:40:10
【问题描述】:
我试图在没有创建 Data.txt 的情况下运行我的程序,但每次我这样做时都会显示错误:“进程无法访问文件‘路径’,因为它正被另一个进程使用。”
这里是代码有错误的区域,要清楚的是,它在“StreamWriter Data = new StreamWriter("Data.txt")'的行上
dataCheck = @"Data.txt";
dataExists = File.Exists(dataCheck);
if (dataExists)
{
StreamReader Data = new StreamReader(@"Data.txt");
for (i = 0; i < 5; i++)
{
//takes lines from text file and stores them in an array
activities[i] = Data.ReadLine();
}
for (i = 0; i < 5; i++)
{
try { activityTimes[i] = Int32.Parse(Data.ReadLine()); }
catch {
StreamWriter DataWrite = new StreamWriter("Data.txt");
DataWrite.Write(activities[0] + "\r\n");
DataWrite.Write(activities[1] + "\r\n");
DataWrite.Write(activities[2] + "\r\n");
DataWrite.Write(activities[3] + "\r\n");
DataWrite.Write(activities[4] + "\r\n");
DataWrite.Write(activityTimes[0] + "\r\n");
DataWrite.Write(activityTimes[1] + "\r\n");
DataWrite.Write(activityTimes[2] + "\r\n");
DataWrite.Write(activityTimes[3] + "\r\n");
DataWrite.Write(activityTimes[4] + "\r\n");
DataWrite.Close();
}
}
}
else
{
//creates data file with activities and times
File.Create(dataCheck);
StreamWriter DataWrite = new StreamWriter("Data.txt");
DataWrite.Write(activities[0] + "\r\n");
DataWrite.Write(activities[1] + "\r\n");
DataWrite.Write(activities[2] + "\r\n");
DataWrite.Write(activities[3] + "\r\n");
DataWrite.Write(activities[4] + "\r\n");
DataWrite.Write(activityTimes[0] + "\r\n");
DataWrite.Write(activityTimes[1] + "\r\n");
DataWrite.Write(activityTimes[2] + "\r\n");
DataWrite.Write(activityTimes[3] + "\r\n");
DataWrite.Write(activityTimes[4] + "\r\n");
DataWrite.Close();
}
如果有人能解释错误/为我提供解决方案,我将不胜感激!
【问题讨论】:
-
Data和DataWrite指向同一个文件。我怀疑你想在尝试写入文件之前Data.Close()。 -
superuser.com/questions/117902/… 也可能感兴趣。
-
如果你的意思是在 for 循环中的活动 [i] 行之后使用 Data.Close(),它仍然给我同样的错误信息。
-
有没有办法检查哪个进程正在使用该文件?我真的需要解决这个问题,但我被困住了。
-
您可以使用 StreamReader.BaseStream 来检查您的流阅读器对象正在使用什么资源。但我认为如果你在第一个 for 循环之后使用 data.close() 并且文件不是处于只读模式,那么应该不会有任何错误。