Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 进程无法使用filewriter访问该文件_C#_.net - Fatal编程技术网

C# 进程无法使用filewriter访问该文件

C# 进程无法使用filewriter访问该文件,c#,.net,C#,.net,尝试检查文件是否为空,然后在文档中写入类似“文本为空”的内容 但每当我得到 进程无法访问该文件,因为其他进程正在使用该文件 即使我在写入后关闭文件 我错过了什么 StreamWriter myWriter1 = new StreamWriter(resultpath); List<string> a = File.ReadAllLines(path).ToList(); List<string> b = File.ReadAllLines(newPath).ToList(

尝试检查文件是否为空,然后在文档中写入类似“文本为空”的内容

但每当我得到

进程无法访问该文件,因为其他进程正在使用该文件

即使我在写入后关闭文件

我错过了什么

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();
StreamWriter myWriter1=新的StreamWriter(resultpath);
List a=File.ReadAllLines(path.ToList();
List b=File.ReadAllLines(newPath.ToList();
foreach(a中的字符串s)
{
控制台。写入线(s);
如果(!b.包含)
{
myWriter1.WriteLine(s);
myWriter1.Close();
}
其他的
{
继续;
}
}
字符串[]resultfile=File.ReadAllLines(resultpath);
if(resultfile==null | | resultfile.Length==0)
{
myWriter1.WriteLine(“我不喜欢你”,真的);
}
myWriter1.Close();

在循环中写入文件编写器后,您可以关闭并处置该文件编写器,并在需要再次写入同一文件时重新创建该文件

还请注意,最好使用语句将其包装到
中,以确保它将被关闭并自动释放非托管资源(因此不需要在循环中一次又一次地关闭它)

List a=File.ReadAllLines(path.ToList();
List b=File.ReadAllLines(newPath.ToList();
使用(var myWriter1=newstreamwriter(resultpath,false))
{
foreach(a中的字符串s)
{
控制台。写入线(s);
如果(!b.包含)
myWriter1.WriteLine(s);
}
}
字符串[]resultfile=File.ReadAllLines(resultpath);
if(resultfile==null | | resultfile.Length==0)
{
使用(var myWriter1=newstreamwriter(resultpath,true))
{
myWriter1.WriteLine(“我不喜欢你”,真的);
}
}

在循环中写入文件编写器后,您可以关闭并处置该文件编写器,并在需要再次写入同一文件时重新创建该文件

还请注意,最好使用
语句将其包装到
中,以确保它将被关闭并自动释放非托管资源(因此不需要在循环中一次又一次地关闭它)

List a=File.ReadAllLines(path.ToList();
List b=File.ReadAllLines(newPath.ToList();
使用(var myWriter1=newstreamwriter(resultpath,false))
{
foreach(a中的字符串s)
{
控制台。写入线(s);
如果(!b.包含)
myWriter1.WriteLine(s);
}
}
字符串[]resultfile=File.ReadAllLines(resultpath);
if(resultfile==null | | resultfile.Length==0)
{
使用(var myWriter1=newstreamwriter(resultpath,true))
{
myWriter1.WriteLine(“我不喜欢你”,真的);
}
}

试试这段代码。您正在关闭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);
    }

}
使用(var myWriter1=newstreamwriter(resultpath,true))
{
List a=File.ReadAllLines(path.ToList();
List b=File.ReadAllLines(newPath.ToList();
int一致性=0;
foreach(a中的字符串s)
{
控制台。写入线(s);
如果(!b.包含)
{
myWriter1.WriteLine(s);
巧合++;
}
}
如果(一致==0)
{
myWriter1.WriteLine(“我不喜欢你”,真的);
}
}

另外,请注意,对于
IDisposable
对象,最好将其包含在
using
子句中,因为它在完成时会处理所有资源。

请尝试此代码。您正在关闭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);
    }

}
使用(var myWriter1=newstreamwriter(resultpath,true))
{
List a=File.ReadAllLines(path.ToList();
List b=File.ReadAllLines(newPath.ToList();
int一致性=0;
foreach(a中的字符串s)
{
控制台。写入线(s);
如果(!b.包含)
{
myWriter1.WriteLine(s);
巧合++;
}
}
如果(一致==0)
{
myWriter1.WriteLine(“我不喜欢你”,真的);
}
}

另外,请注意,对于
IDisposable
对象,最好将其包含在
using
子句中,因为它在完成时会处理所有资源。

如果(!b.Contains(s))
条件从未满足,是否有可能出现
?在本例中,写入程序在读取同一文件之前未关闭。如果删除
myWriter1.Close()
foreach
循环中?并在
string[]resultfile=File.ReadAllLines(resultpath)之前执行此操作?不,该部分正在满足并正常工作,如果所有内容都匹配,则显示一个空白文本。然后,我得到了预期的“无法写入已关闭的textwriter”。您需要在myWriter1.WriteLine(“Der er ikke nogen udmeldinger idag”,true)之前重新创建writer如果(!b.Contains(s))
条件从未满足,是否有可能出现
?在本例中,写入程序在读取同一文件之前未关闭。如果删除
myWriter1.Close()
foreach
循环中?并在
string[]resultfile=File.ReadAllLines(resultpath)之前执行此操作?不,该部分正在满足并正常工作,如果所有内容都匹配,则显示一个空白文本。然后,我得到了预期的“无法写入已关闭的textwriter”。您需要在myWriter1.WriteLine(“Der er ikke nogen udmeldinger idag”,true)之前重新创建writer执行
是否有任何意义,否则继续在这种情况下?(只是想知道为什么OP拥有它,而你决定保留它)@Innat3当然不是;),谢谢,错过了冗余,做
还有什么意义吗在这种情况下?(只是想知道为什么OP拥有它,而你决定保留它)@Innat3当然不是;),谢谢,我错过了裁员,