2016-09-16 28 views
0

的问题是,当我打印数据“M100.csv”文件,我只看到的只有一行:的StreamWriter(无法键入全文)C#

    writer1.WriteLine("{0} {1} {2} {3} {4} {5} {6}", 
        houses[i].District, houses[i].Street, houses[i].Number, 
        houses[i].Type, houses[i].Years, houses[i].Area, houses[i].Rooms); 
        writer1.WriteLine("\n"); 

“writer1”必须打印两行不同的房子,但它只打印一个。我相信我的其他方法正常工作。 我也没有看到这一行:

   writer.WriteLine("{0} {1}","Duomenys apie visus murinius namus, kuriu plotas yra daugiau nei 100kv.m. :\n", 
      "Rajonas \t Gatve \t Numeris \t Tipas \t Metai \t Plotas \t Kambariu skaicius \n"); 
      writer.WriteLine("\n"); 

全码:

public static void Print(Houses[] houses,int amount, int[] BrickHouseNumber,int[] BlockHouseNumber) 
    { 

     using (StreamWriter writer = new StreamWriter("C:\\Users\\Andrius\\Desktop\\Mokslams\\C#\\Pratybos\\P2\\P2.4\\M100.csv")) 
     { 
      writer.WriteLine("{0} {1}","Duomenys apie visus murinius namus, kuriu plotas yra daugiau nei 100kv.m. :\n", 
      "Rajonas \t Gatve \t Numeris \t Tipas \t Metai \t Plotas \t Kambariu skaicius \n"); 
      writer.WriteLine("\n"); 
     } 
     for (int i = 0; i < amount; i++) 
     { 
      if (BrickHouseNumber[i] > 0) 
      { 
       using (StreamWriter writer1 = new StreamWriter("C:\\Users\\Andrius\\Desktop\\Mokslams\\C#\\Pratybos\\P2\\P2.4\\M100.csv")) 
       { 
        writer1.WriteLine("{0} {1} {2} {3} {4} {5} {6}", 
        houses[i].District, houses[i].Street, houses[i].Number, 
        houses[i].Type, houses[i].Years, houses[i].Area, houses[i].Rooms); 
        writer1.WriteLine("\n"); 
       } 
      } 

} }

回答

0

声明StreamWriter的,唯一的路径构造函数将创建或在覆盖文件位置。由于您正在为每次写入创建一个新的流写入器,因此您正在有效地截断并重新启动该文件,并最终以一行文本结束。如果不重构代码,可以通过将构造函数更改为追加而不是通过将true传递给构造函数重载来进行覆盖来修复此行为。

new StreamWriter("C:\\Users\\Andrius\\Desktop\\Mokslams\\C#\\Pratybos\\P2\\P2.4\\M100.csv", true) 

此外,WriteLine方法会自动添加行尾。使用WriteLine("\n")增加了,假设一个Windows环境,一个换行符,一个回车符和另一个换行符。这将导致大量的空白。