如何写入应用程序内的文本文件

时间:2013-03-18 21:10:14

标签: vb.net resources text-files overwrite

基本上,我的应用程序内部有一个文本文件(在应用程序属性的资源选项卡中)。

现在我正在尝试阅读&写到那个文件,阅读工作得很好,这是给我提问的写作部分。

我正在使用dim str as string = my.resources.textfile,这有效。

现在我正在尝试使用my.resources.textfile = str2,这会给我一个错误,指出该文件是只读的。

我该如何解决这个问题?

注意:我不喜欢将文件写入用户的PC,因为它不是需要编写的大量数据,因为它看起来有点不专业(在我看来),所以我更喜欢这样做的方法无需将文件写入用户的PC。

2 个答案:

答案 0 :(得分:3)

  

当它只是一个包含1行文本的小文本文件时,将其写入不同的文件是一种浪费。

为什么这会是“浪费”?这是一种看待它的奇怪方式。如果首先编写文件是值得的,那么将其写入单独的文件是值得的。

像雅各布在评论中所说,修改可执行文件本身是一项非常重要的任务。让代码工作以实现这一目标将是真正的浪费。这假设您可以通过病毒扫描程序,公司策略或基本代码审查获得类似的代码。

  

我不喜欢将文件写入用户的PC,因为它不是需要编写的大量数据,因为它看起来有点不专业(在我看来),所以我更喜欢这样做而无需写一个文件到用户的PC。

你有正确的直觉担心这一点,但在这种特殊情况下的担忧是错误的。将文件写入用户的桌面,文档文件夹,甚至是硬盘的根级别确实是不专业的。这些位置要么专属于用户或系统,即使您可以成功写入它们(UAC将在磁盘的根级别上一直对战),您也不应该这样做。 <子>(Blah blah blah, I've ranted about this before.

而是使用专门用于此目的的Application Data文件夹。您可以保证对此位置具有读/写权限,并且没有普通用户在那里查看,因此他们不会看到您投入的任何内容。看到期望的异常用户看到这种东西存放在那里。

你唯一可能犯的错误就是硬编码这样一个文件夹的路径。不要这样做 - 它会将位置从一台机器更改为下一台机器。而是使用Environment.GetFolderPath方法检索其位置。该函数采用其中一个Environment.SpecialFolder值,其中有一个疯狂的数字。你为此目的感兴趣的三个是:

  • ApplicationData,用于存储应该使用用户帐户漫游的应用程序数据(即,当他们使用其他计算机登录时使用该帐户)
  • LocalApplicationData,用于存储使用用户帐户漫游的应用程序数据(即仅在当前计算机上保留在本地)
  • CommonApplicationData,用于存储所有用户共有的应用程序数据(即非用户特定的)。

答案 1 :(得分:0)

如果它只是登录凭据,为什么不使用My.Settings?获得项目属性,然后到设置选项卡,添加您的设置例如。 “用户名”等并使用如下:My.Settings.username =“Yorrick”       My.settings.save