我每个文件夹都有很长的文本文件列表(大约80-100个文件)。我必须将每4个文本文件合并为一个文本文件。每个文本文件都是一个单独的SQL Insert命令,因此必须在输出文件中保留4个文本文件中第一个的第一行(INSERT INTO数据库(value1,value2,value3)VALUES),其余3个文件应跳过第一行,只有值。
我遇到的问题是,当组合4个文件中的最后一个时,最后一个文件只将最后一个文件的一半复制到新的组合文件中。
即使我尝试将3个文件或2个文件合并为一个文件。它仍然只复制了最后一个文件的一半。
这是我的代码。
fourCount
表示第4个文本文件的合并时间。
string[] array2 = sqlInsertList.ToArray();
StreamWriter outfile3 = new StreamWriter(folderPath.Text + "\\" + count + ".txt");
count++;
foreach (string dirFileName in array2)
{
StreamReader readFile = new StreamReader(dirFileName);
string readFromFile = readFile.ReadLine();
if(fourCount == 1)
{
outfile3 = new StreamWriter(folderPath.Text + "\\" + count + ".txt");
outfile3.WriteLine(readFromFile);
}
while(!readFile.EndOfStream)
{
readFromFile = readFile.ReadLine();
outfile3.WriteLine(readFromFile);
}
count++;
if(fourCount == 4)
{
outfile3.WriteLine(";");
fourCount = 1;
}
else
{
fourCount++;
}
}
答案 0 :(得分:3)
您没有关闭,因此不刷新输出文件。
将其更改为:
using(StreamWriter outfile3 = new StreamWriter(...))
{
count++;
foreach (string dirFileName in array2)
{
if(fourCount == 1)
{
outfile3.Close(); // add this
outfile3 = new StreamWriter(folderPath.Text + "\\" + count + ".txt");
outfile3.WriteLine(readFromFile);
}
...
}
}
答案 1 :(得分:0)
您可以将自动刷新设置为true属性或使用刷新方法,
然而,将流打开是不好的,如果可能的话,当你知道你不需要它时关闭它