进程无法使用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();

进程无法使用filewriter访问文件

可以关闭&在循环中对文件写入器进行写入后将其丢弃,并在需要再次写入同一文件时重新创建它。

还要注意,最好将它包装到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子句中,因为它在完成时处置所有资源。