Wie schreibe ich in / lese ich aus einer "Einstellungen" -Textdatei?

Ich arbeite an einem Timer-Programm, mit dem der Benutzer einen Timer für jedes einzelne Benutzerkonto auf dem Computer einrichten kann. Ich habe Probleme, die Einstellungen in eine Textdatei zu schreiben und daraus zu lesen. Ich möchte wissen, ob es möglich ist, es auf diese Weise zu schreiben -> Benutzername; allowedTime; lastedLoggedIn; verbleibende Zeit; <- in einer Zeile für jeden Benutzer, und wie würde ich das tun? Ich wollte auch wissen, ob es möglich ist, die Textdatei auf diese Weise zu ändern, falls es bereits einen Eintrag für einen Benutzer gibt, nur die erlaubte Zeit oder die verbleibende Zeit zu ändern, irgendwie nur die Datei zu aktualisieren.

Außerdem habe ich auch Probleme, aus der Textdatei zu lesen. Zuallererst kann ich nicht herausfinden, wie man feststellt, ob ein ausgewählter Benutzer in der Datei ist oder nicht. Formular dort, wenn der Benutzer in der Datei aufgeführt ist, wie kann auf den Rest der Zeile zugegriffen werden, um nur die erlaubte Zeit dieses Benutzers oder die verbleibende Zeit zu erhalten?

Ich habe ein paar Möglichkeiten ausprobiert, aber ich kann es einfach nicht dazu bringen, mir die Bilder so vorzustellen, wie es Sinn macht. Hier ist der Code:

Public Sub saveUserSetting(ByVal time As Integer)
    Dim hash As HashSet(Of String) = New HashSet(Of String)(File.ReadAllLines("Settings.txt"))
    Using w As StreamWriter = File.AppendText("Settings.txt")
        If Not hash.Contains(selectedUserName.ToString()) Then
            w.Write(selectedUserName + "; ")
            w.Write(CStr(time) + "; ")
            w.WriteLine(DateTime.Now.ToLongDateStr,ing() + "; ")
        Else
            w.Write(CStr(time) + "; ")
            w.WriteLine(DateTime.Now.ToLongDateString() + "; ")
        End If
    End Using
End Sub

Public Sub readUserSettings()
    Dim currentUser As String = GetUserName()
    Dim r As List(Of String) = New List(Of String)(System.IO.File.ReadLines("Settings.txt"))
    'For Each i = 0 to r.lenght - 1

    'Next
    'check to see if the current user is in the file
    MessageBox.Show(r(0).ToString())
    If r.Contains(selectedUserName) Then
        MessageBox.Show(selectedUserName + " is in the file.")
        'Dim allowedTime As Integer
    Else
        MessageBox.Show("the user is not in the file.")

    End If
    'if the name is in the file then
    'get the allowed time and the date
    'if the date is older than the current date return the allowed time
    'if the date = the current date then check thhe remaning time and return that
    'if the date is ahead of the current date return the reamining and display a messgae that the current date needs to be updated.
End Sub

edit: Ich wollte nur sicherstellen, dass ich die Serialisierung richtig mache und dasselbe für die Deserialisierung. das ist was ich bisher bekommen habe:

Friend userList As New List(Of Users)

Public Sub saveUserSetting()
    Using fs As New System.IO.FileStream("Settings.xml", IO.FileMode.OpenOrCreate)
        Dim bf As New BinaryFormatter
        bf.Serialize(fs, userList)
    End Using
End Sub

Public Sub readUserSettings()
    Dim currentUser As String = GetUserName()
    Dim useList As New List(Of Users)
    Using fs As New System.IO.FileStream("Settings.xml", IO.FileMode.OpenOrCreate)
        Dim bf As New BinaryFormatter
        useList = bf.Deserialize(fs)
    End Using
    MessageBox.Show(useList(0).ToString)
End Sub

<Serializable>
Class Users
    Public userName As String
    Public Property allowedTime As Integer
    Public Property lastLoggedInDate As String
    Public Property remainingTime As Integer
    Public Overrides Function ToString() As String
        Return String.Format("{0} ({1}, {2}, {3})", userName, allowedTime, lastLoggedInDate, remainingTime)
    End Function
End Class

edit 2: Ich bin nicht so vertraut mit try / catch, aber würde das stattdessen funktionieren?

Public Sub readUserSettings()
    If System.IO.File.Exists("Settings") Then
        Using fs As New System.IO.FileStream("Settings", FileMode.Open, FileAccess.Read)
            Dim bf As New BinaryFormatter
            userList = bf.Deserialize(fs)
        End Using
    Else
        MessageBox.Show("The setting file doesn't exists.")
    End If
End Sub

Antworten auf die Frage(2)

Ihre Antwort auf die Frage