2012-09-11 44 views
0

我有一長串文本文件(大約80-100個文件)每個文件夾。我必須將每4個文本文件合併到一個文本文件中。每個文本文件都是一個單獨的SQL插入命令,因此必須在輸出文件中保留4個文本文件中第一個的第一行(INSERT INTO數據庫(value1,value2,value3)VALUES),其餘3個文件應該跳過第一行,只是有價值。如何將許多文本文件組合成4組

我遇到的問題是,當組合最後的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++; 
      } 
     } 

回答

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

     ... 
    } 
} 
+0

我關閉它後工作得很好!謝謝! – user908759

0

可以設置自動清空到真正的財產或使用沖洗方法,
但是它沒有很好的離開流開,所以如果有可能接近它時,你知道你不會需要它

相關問題