2017-07-25 94 views
-1

我有一个功能正常的Streamwriter,它创建一个文本文件并将所需的信息放入该文件中,但是每当我重新运行该应用程序时,都会重新创建文本文件当前值取代旧的。我如何确保将以前的数据保存在文本文件中,并将新数据添加到文本文件中?将数据附加到文件似乎是显而易见的路线,但我不确定如何将代码合并到我的程序中。将数据保存到VB.Net中的文本文件

Dim CorpID, Fname, Lname, PreConf, ConfCost As String 
     CorpID = txtCorpID.Text 
     Fname = txtFirstName.Text 
     Lname = txtLastName.Text 
     If radNotAttending.Checked = True Then 
      PreConf = "" 
     Else 
      PreConf = cmbCourses.SelectedItem.ToString 
     End If 
     ConfCost = decAttendCost.ToString("C") 

     Dim wr As StreamWriter 
     wr = New StreamWriter("C:\Users\Anon\Documents\SampleTextFile.txt") 
     wr.WriteLine(String.Format("{0},{1},{2},{3}, {4}", CorpID, Fname, Lname, PreConf, ConfCost)) 
     wr.Flush() 
     wr = Nothing 
+1

在您键入方法时检查VS提供的帮助。 StreamWriter有一个重载允许你追加。另请查看[问]并参加[旅游] – Plutonix

+0

我非常感谢所有帮助。我想,我会做一些关于痛苦的具体指导方针stackoverflow有问题要求的失误。然而,鉴于我收到了我最初来到这里的信息,我的努力取得了成功。请不要误解。我尊重这些准则只是为了提高效率,所以它们值得阅读和尊重。感谢您的提醒。 –

回答

0

您需要另一个StreamWriter构造函数的重载。

只需使用wr = New StreamWriter("C:\Users\Anon\Documents\SampleTextFile.txt", true)

你需要this one

例子:

Using wr As new StreamWriter("C:\Users\Anon\Documents\SampleTextFile.txt",true) 
    wr.WriteLine($"{CorpID},{Fname},{Lname},{PreConf},{ConfCost}) 
End Using 

随着using,当它做StreamWriter被释放,所以当你再次点击该按钮时,没有StreamWriter正在访问该文件,你可以创建另一个StreamWriter insatnce没有问题。

+0

This Works!不幸的是,我必须错过别的东西。它只能在程序运行期间运行一次。如果再次单击我的按钮以添加更多数据,则会出现IOException,表示该文本文件正在被另一个进程使用。有什么建议么? –

+0

这是因为您每次按下按钮时都会创建一个新的Steamwriter。您需要检查是否已经创建了Streamwriter,如果是,则只需使用它写入。 –

+0

我编辑了我的答案来展示如何去做 –

0

还有的the StreamWriter constructor正是这种目的的过载:

wr = New StreamWriter("C:\Users\Anon\Documents\SampleTextFile.txt", True) 

第二个参数是:

真实数据追加到该文件;假覆盖文件。如果指定的文件不存在,则此参数不起作用,并且构造函数将创建一个新文件。

+0

哦,对不起,你比我快,我没有看到你的答案。相当不错的是关闭相同的答案大声笑 –

+0

这工作。但是,如果我在程序的相同运行中再次触发我的按钮事件以添加更多数据,则会出现IOException,表示该文本文件正在被另一个进程使用。有什么建议么? –

相关问题