保存自定义设置文本文件的位置?

Posted

技术标签:

【中文标题】保存自定义设置文本文件的位置?【英文标题】:Location to save custom settings text file? 【发布时间】:2016-02-22 15:31:51 【问题描述】:

我有一个 VB.Net 程序,它有一些保存在文本文件中的自定义设置。现在该文件保存在“settings.txt”中,该文件保存在 bin 文件夹中。问题是这个程序被发布到我的网络上,所以我的同事可以使用它,每次我推出新的更新时,他们保存的设置都会被删除;它用它的空白版本覆盖文件。是否有其他位置更适合我保存文件?或者有没有办法(可能通过代码?)来防止我每个同事的内容在我每次发布更新时都被删除?

Public Class Program
'global variables
Dim fileName As String = "settings.txt"
Private Sub Program_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'code
Try
If File.Exists(fileName) = False Then
    File.Create(fileName)
End If
        ' Open the file using a stream reader.
        Using sr As New StreamReader(fileName)
            Dim line As String
            While (sr.EndOfStream = False)
                line = sr.ReadLine()
            End While
        End Using
    Catch ex As Exception
        MsgBox(ex.ToString())
    End Try
'rest of program
End Sub
End Class

【问题讨论】:

有什么东西可以排除 My.Settings 吗? 更具体地说,它是 DataGridView 的许多文本和列过滤器。我的一些同事不需要查看其中的所有 23 列和/或 65 行,并且可以选择按列名和特定列中的文本对其进行过滤。这太复杂了,无法保存在 My.Settings 中。我之前尝试了一个 XML 文件,但没有成功,发现一个文本文件更容易。 要继续扩展,文本文件中的每个“条目”都是所有已应用过滤器的列表,然后是“ENDLIST”以结束一个过滤器列表并开始另一个过滤器列表。我的同事可以命名他们的过滤器并在打开应用程序后立即从下拉列表中访问它。 你为什么不把你想安全到文本文件中的文本按原样保存到设置中。您甚至可以将其作为已拆分为行的 StringCollection 来保护它。这可能不是每个人都希望安全进入的样子。但是没有什么可以阻止您像这样使用 My.Settings 中的条目。 天哪。序列化类或类型列表比读取和解析文本文件要容易得多。可能需要 3 行代码来序列化和将项目数量存储到磁盘,并且需要 3-5 行来读取它们。 【参考方案1】:

如果这是一个 ClickOnce 应用,试试这个:

Friend fileName As String = String.Empty

With My.Application.Info
    fileName = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), .CompanyName, .ProductName, .Version.ToString, "Settings.txt")
End With

【讨论】:

我认为这是一个 ClickOnce 应用程序。我的一位同事建议使用 AppData 文件夹。

以上是关于保存自定义设置文本文件的位置?的主要内容,如果未能解决你的问题,请参考以下文章

为文本保存设置正确的文件路径 - vb.NET [重复]

在jar文件本身中保存用户数据[重复]

qml-自定义quick模块

我无法设置自定义文本字段的文本

编辑文本框中提示的自定义位置。

如何以编程方式将字体自定义字体设置为 Spinner 文本?