代码之家  ›  专栏  ›  技术社区  ›  Shahtaj Khalid

在文本文件中显示输出

  •  -1
  • Shahtaj Khalid  · 技术社区  · 10 年前

    我已经通过文件获取了输入代码,我必须根据它生成数据,并将其结果输出到文本文件中。。 我的输出代码如下。。

     public void Generator()
        {
        /// ....... Code
        public void DisplayTOKENS()
        {
    
            using (StreamWriter writer =
       new StreamWriter("C:\\Users\\saeed\\Documents\\Outputt.txt"))
            {
            for (int i = 0; i < j;i++ )
            {
                tok[i].Display_Token();
            } }
    
         }
    

    //在另一个名为TOKEN的结构中

    public void Display_Token()
        { /*
                using (StreamWriter writer =
       new StreamWriter("C:\\Users\\saeed\\Documents\\Outputt.txt"))
            {
                writer.Write("( " + this.Class_Part + " , ");
                writer.Write(this.Value_Part + " , ");
                writer.Write(this.Line_no + " )");
                writer.WriteLine();
            }*/
               Console.Write("( " + this.Class_Part + " , ");
               Console.Write(this.Value_Part + " , ");
               Console.Write(this.Line_no + " )");
               Console.WriteLine();
    
        }
    

    当我尝试直接在Display_Token中工作时,它只显示文件中的最后一行。我想在文件中显示完整的数组。等待一些积极的回应!!

    2 回复  |  直到 10 年前
        1
  •  0
  •   Lorek    10 年前

    StreamWriter构造函数将覆盖现有文件。因此,每个令牌都会有效地删除之前写入的内容,然后再写入其内容。这就是为什么在文件中只能看到最后一个令牌的内容。

    将重载与“append”参数一起使用,并传递true,以便不删除现有文件。

        2
  •  0
  •   Eldarien    10 年前

    您必须检查文件是否存在,然后执行“追加”操作而不是“覆盖”。

    // in DisplayTOKENS()
    
    string fileName = "C:\\Users\\saeed\\Documents\\Outputt.txt";
    if (System.IO.File.Exists(fileName))
        System.IO.File.Delete(fileName);
    
    for (int i = 0; i < j; i++)
    {
        tok[i].Display_Token(fileName);
    }
    
    
    // in Display_Token(string fileName)
    
    System.IO.File.AppendAllText(fileName, "( " + this.Class_Part + " , " + this.Value_Part + " , " + this.Line_no + " )");