System.IO beenden

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von SenA.

    System.IO beenden

    In der Form_Load:

    VB.NET-Quellcode

    1. If System.IO.File.Exists(path) Then
    2. Else
    3. System.IO.File.Create(path)
    4. End If
    5. recor.Text = System.IO.File.ReadAllText(path)

    Später wird ne Sub aufegrufen in der es heißt:

    VB.NET-Quellcode

    1. Dim sw As System.IO.StreamWriter
    2. sw = New System.IO.StreamWriter(path)


    Beim Debuggen:

    Quellcode

    1. Der Prozess kann nicht auf die Datei "XXX\Neues Textdokument.txt" zugreifen, da sie von einem anderen Prozess verwendet wird.


    Muss ich in der Load dann Creatfile iwie beenden?

    VB.NET-Quellcode

    1. Private Sub record()
    2. Dim sw As System.IO.StreamWriter
    3. sw = New System.IO.StreamWriter(path)
    4. If CDec(recor.Text) > CDec(Time.Text) Then
    5. sw.Write(Time.Text, True)
    6. sw.Close()
    7. MsgBox("Neuer Record")
    8. recor.Text = Time.Text
    9. Time.Text = ""
    10. Time2.Text = ""
    11. Else
    12. sw.Close()
    13. End If
    14. End Sub
    15. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    16. Label2.Visible = False
    17. If System.IO.File.Exists(path) Then
    18. Else
    19. System.IO.File.Create(path)
    20. End If
    21. recor.Text = System.IO.File.ReadAllText(path)
    22. End Sub
    Sag mal, ist das nicht genau das gleiche Problem: [VB.NET] Zugriff auf Textdatei fail
    Dann zwei Dinge:
    1. If (was) Then (nix) Else (tu was) ist doof. Wozu gibt es Not und <>?
    2. Create() gibt einen StreamWriter zurück, wenn du ihn nicht gleich nutzen willst, dann schließe ihn, sonst behält er die Datei im Exklusivzugriff. (-> Genau das, was ich in meinen Post in deinem anderen Thread geschrieben habe.)
    Ach und 3. Deine Controls haben schönere Namen verdient.

    Viele Grüße, Phil.
    Nein daran liegt es ja nicht, sondern die Methode Create() gibt einen Stream zurück.

    Also könnte man es evtl so machen

    VB.NET-Quellcode

    1. System.IO.File.Create(path).Close()


    Oder ausgeschrieben

    VB.NET-Quellcode

    1. Dim fs As Stream = System.IO.File.Create(path)
    2. fs.Close()
    Kannst du genau spezifizieren wo der Fehler aufstitt? beim Streamwriter? oder schon vorher bei ReadallText?

    Edit: Versuche mal mit StreamReader einzulesen

    VB.NET-Quellcode

    1. Dim sr As New StreamReader(pfad)
    2. Text = sr.ReadToEnd()
    3. sr.Close()

    VB.NET-Quellcode

    1. Private Sub record()
    2. Dim sw As System.IO.StreamWriter
    3. sw = New System.IO.StreamWriter(path) 'hier kommt der fehler
    4. If CDec(recor.Text) > CDec(Time.Text) Then
    5. sw.Write(Time.Text, True)
    6. sw.Close()
    7. MsgBox("Neuer Record")
    8. recor.Text = Time.Text
    9. Time.Text = ""
    10. Time2.Text = ""
    11. Else
    12. sw.Close()
    13. End If
    14. End Sub
    15. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    16. If System.IO.File.Exists(path) Then
    17. Else
    18. System.IO.File.Create(path)
    19. System.IO.File.Create(path).Close()
    20. End If
    21. recor.Text = System.IO.File.ReadAllText(path)
    22. End Sub
    Das ist ja falsch, wieso hast du nun 2 mla File.Create() ??? Dann würde versucht sie 2 mal zu erstellen.

    VB.NET-Quellcode

    1. If Not System.IO.File.Exists(path) Then
    2. System.IO.File.Create(path).Close()
    3. End If


    So ists ein richtiger schöner Code.