【问题标题】:How to combine many text files into groups of 4如何将许多文本文件组合成 4 个组
【发布时间】:2012-09-04 21:56:38
【问题描述】:

每个文件夹都有一长串文本文件(大约 80 - 100 个文件)。我必须将每 4 个文本文件合并为一个文本文件。每个文本文件都是一个单独的 SQL 插入命令,因此必须在输出文件中保留 4 个文本文件中第一个文件的第一行(INSERT INTO database (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++;
            }
        }

【问题讨论】:

    标签: c# while-loop text-files streamreader streamwriter


    【解决方案1】:

    您没有关闭,因此没有刷新输出文件。

    改成:

     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);
            }
    
           ...
        }
     }
    

    【讨论】:

      【解决方案2】:

      您可以将 auto Flush 设置为 true 属性或使用 Flush 方法,
      但是,让流打开是不好的,所以如果可能的话,当你知道你不需要它时关闭它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-11
        相关资源
        最近更新 更多