尝试检查文件是否为空,然后写一些类似"文本为空的"进入文件。
但每当我得到
该进程无法访问该文件,因为它正由另一个进程使用
即使我在写完后关闭了文件。
我在这里缺少什么?
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();
答案 0 :(得分:2)
你可以关闭&amp;在循环中写入文件编写器并在再次写入同一文件时重新创建它。
另请注意,最好将其包装到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);
}
}
答案 1 :(得分:1)
试试这段代码。您正在关闭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
子句中,因为它在完成时会处理所有资源。