进程无法使用filewriter访问文件
本文关键字:filewriter 访问 文件 进程 | 更新日期: 2023-09-27 18:16:10
尝试检查文件是否为空,然后在文档中写入类似"the text is empty"的内容。
但是每当我得到
进程不能访问该文件,因为它正在被另一个进程使用
,即使我在写入后关闭文件。
我在这里错过了什么?
StreamWriter myWriter1 = new StreamWriter(resultpath);
List<string> a = File.ReadAllLines(path).ToList();
List<string> b = File.ReadAllLines(newPath).ToList();
foreach (string s in a)
{
Console.WriteLine(s);
if (!b.Contains(s))
{
myWriter1.WriteLine(s);
myWriter1.Close();
}
else
{
continue;
}
}
string[] resultfile = File.ReadAllLines(resultpath);
if (resultfile == null || resultfile.Length == 0)
{
myWriter1.WriteLine("Der er ikke nogen udmeldinger idag", true);
}
myWriter1.Close();
可以关闭&在循环中对文件写入器进行写入后将其丢弃,并在需要再次写入同一文件时重新创建它。
还要注意,最好将它包装到using
语句中,以确保它将被关闭,并自动释放非托管资源(因此您不需要在循环中一次又一次地关闭它)。
List<string> a = File.ReadAllLines(path).ToList();
List<string> b = File.ReadAllLines(newPath).ToList();
using (var myWriter1 = new StreamWriter(resultpath, false))
{
foreach (string s in a)
{
Console.WriteLine(s);
if (!b.Contains(s))
myWriter1.WriteLine(s);
}
}
string[] resultfile = File.ReadAllLines(resultpath);
if (resultfile == null || resultfile.Length == 0)
{
using (var myWriter1 = new StreamWriter(resultpath, true))
{
myWriter1.WriteLine("Der er ikke nogen udmeldinger idag", true);
}
}
试试下面的代码。您关闭了2个分析文件中每一行的StreamWriter
,但如果没有巧合,您永远不会关闭它。
using (var myWriter1 = new StreamWriter(resultpath, true))
{
List<string> a = File.ReadAllLines(path).ToList();
List<string> b = File.ReadAllLines(newPath).ToList();
int coincidences=0;
foreach (string s in a)
{
Console.WriteLine(s);
if (!b.Contains(s))
{
myWriter1.WriteLine(s);
coincidences++;
}
}
if (coincidences == 0)
{
myWriter1.WriteLine("Der er ikke nogen udmeldinger idag", true);
}
}
另外,请注意,对于IDisposable
对象,最好将其包含在using
子句中,因为它在完成时处置所有资源。