谁能告诉为啥在使用 StreamWriter 保存数据时仍然显示以前的数据

Posted

技术标签:

【中文标题】谁能告诉为啥在使用 StreamWriter 保存数据时仍然显示以前的数据【英文标题】:Can any one tell why the previous data is still displayed while saving data using StreamWriter谁能告诉为什么在使用 StreamWriter 保存数据时仍然显示以前的数据 【发布时间】:2011-07-31 17:07:42 【问题描述】:

我正在使用 Stream writer 将数据保存到文件名,但如果我第二次运行代码,相同的数据会附加到以前的数据中,但我想清除旧数据并写入数据

我在文本文件中应该有的数据应该如下

101 435435345 3445454541104021031A094101                                                      
52251               1                   1         CCD1         110402110402   1111000020000001
6281110000251                00000000011              1                     1 0111000020000001
822500000100111000020000000000010000000000001                                  111000020000001
 9000001000001000000010011100002000000000001000000000000                                       

我的示例代码

if (i == 0)

  index++;
  string m_strDate = DateTime.Now.ToString("yyyy/MM/dd");
  m_strDate = m_strDate.Replace("/", "");
  StrFilePath = "log" + m_strDate + index + ".txt";

  using (StreamWriter sw = new StreamWriter(StrFilePath,true))
    
     using (StreamReader sr = new StreamReader(new MemoryStream(System.Text.Encoding.ASCII.GetBytes(strLine))))
    
        while (sr.Peek() >= 0)
         
           strReadLine = sr.ReadLine();
          if (strReadLine.StartsWith("1"))
           
                if (i == 0)
              
                  strFileHeader = strReadLine;
                  sw.WriteLine(strFileHeader);
               
          
   if (strReadLine.StartsWith("5"))
     
     strBatchHeader = strReadLine;
      if (i == 0)
    
         Btchno = Convert.ToInt32(strBatchHeader.Substring(87, 7));
        BatchCnt = Convert.ToInt16(Btchno);
       
     if (i > 0)
    
           BatchCnt++;
           strBatchHeader = strBatchHeader.Substring(0, 87) + Convert.ToString(BatchCnt.ToString().PadLeft(7, (char)48));
      
    sw.WriteLine(strBatchHeader);
  
   
 
 

【问题讨论】:

您应该使用StringReader 而不是StreamReader 【参考方案1】:

您将true 作为StringWriter 构造函数中的append 参数传递。

【讨论】:

【参考方案2】:

这里的第二个参数:new StreamWriter(StrFilePath,true)设置为true,表示追加到文件。将该参数设置为 false,它将起作用。

【讨论】:

如果我设置为 false 则我无法按照我的要求写入数据 @Dora:那不是真的。 StreamWriters 在参数设置为 false 的情况下工作正常。 Gerrie 假设每次在我的文件中的输出都是相同的,但如果我设置为 false 然后继续我不会得到那个

以上是关于谁能告诉为啥在使用 StreamWriter 保存数据时仍然显示以前的数据的主要内容,如果未能解决你的问题,请参考以下文章

谁能告诉我为啥我的过滤数组是空的?

谁能告诉我为啥 Smack 的 Presence.getMode() 在可用(在线)联系的情况下给出 null ?

谁能告诉我为啥在尝试实现动画时在 Flutter 中出现此错误

测试在 UI 中更新但在控制台中没有更新,为啥?谁能告诉为啥控制台不更新?

谁能告诉我为啥这超过了 2 秒的时间限制?(短代码)

谁能告诉为啥以下两个代码之间的结果不同? [复制]