Kann datei nicht speichern - anderer Prozess greift auf Datei zu.

  • VB.NET
  • .NET (FX) 4.0

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von 00yoshi.

    Kann datei nicht speichern - anderer Prozess greift auf Datei zu.

    VB.NET-Quellcode

    1. Save.ShowDialog()
    2. Dim FileName As String
    3. Dim Contents(Triangles.Count - 1) As String
    4. For I As Integer = 0 To Triangles.Count - 1
    5. Contents(I) = Triangles(I).X & " " & Triangles(I).Y & " " & Triangles(I).Z & " " & Triangles(I).PX1 & " " & Triangles(I).PX2 & " " & Triangles(I).PX3 & " " & Triangles(I).PY1 & " " & Triangles(I).PY2 & " " & Triangles(I).PY3 & " " & Triangles(I).PZ1 & " " & Triangles(I).PZ2 & " " & Triangles(I).PZ3 & " " & Triangles(I).RX & " " & Triangles(I).RY & " " & Triangles(I).RZ & " " & Triangles(I).ID
    6. Next
    7. If IO.File.Exists(Save.FileName) Then
    8. If Save.FileName.EndsWith(".Y3M") Then
    9. FileName = Save.FileName
    10. Else
    11. FileName = Save.FileName & ".Y3M"
    12. End If
    13. Else
    14. If Save.FileName.EndsWith(".Y3M") Then
    15. IO.File.Create(Save.FileName)
    16. FileName = Save.FileName
    17. Else
    18. IO.File.Create(Save.FileName & ".Y3M")
    19. FileName = Save.FileName & ".Y3M"
    20. End If
    21. End If
    22. IO.File.WriteAllLines(FileName, Contents)

    Wenn die Datei bereits Existiert, gibt es kein Problem, sonst ein Error.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „00yoshi“ ()

    Ja, Du musst schon nen FileStream nutzen und den schließen, ansonsten ist das noch offen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Vielen Dank!
    Jetzt der Code:

    VB.NET-Quellcode

    1. Save.ShowDialog()
    2. Dim FileName As String
    3. If Save.FileName.EndsWith(".Y3M") Then
    4. FileName = Save.FileName
    5. Else
    6. FileName = Save.FileName & ".Y3M"
    7. End If
    8. Dim fs As New IO.FileStream(FileName, IO.FileMode.OpenOrCreate)
    9. Dim sw As New IO.StreamWriter(fs)
    10. For I As Integer = 0 To Triangles.Count - 1
    11. sw.WriteLine(Triangles(I).X & " " & Triangles(I).Y & " " & Triangles(I).Z & " " & Triangles(I).PX1 & " " & Triangles(I).PX2 & " " & Triangles(I).PX3 & " " & Triangles(I).PY1 & " " & Triangles(I).PY2 & " " & Triangles(I).PY3 & " " & Triangles(I).PZ1 & " " & Triangles(I).PZ2 & " " & Triangles(I).PZ3 & " " & Triangles(I).RX & " " & Triangles(I).RY & " " & Triangles(I).RZ & " " & Triangles(I).ID)
    12. Next
    13. sw.Close()

    Vergiss nicht den noch zu schließen (Close) und ruf noch davor ​Flush auf.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Oder so. Ich bevorzuge eher die Variante, das so aufzurufen, auch wenn IDisposable drinne ist.
    Also entweder direkt aufrufen oder ab in nen Using-Block damit und gut ist, aber disposed muss es werden, damit die Ressource wieder frei ist.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Nachdem die Datei erstellt wurde, ist die Datei noch geöffnet und das programm versucht sie zu lesen.
    @Artenus danke, dass du es mir gerade gesagt hast. Das kann mir in der zukunft jetzt auch Arbeit ersparen, wenn der FileStream schon vorher da ist...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „00yoshi“ ()