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当然不是;),谢谢,我错过了裁员,