"Datei wird von einem anderen Prozess verwendet" nach der Datei.Create()
Ich habe eine Anwendung, die erstellt eine text Datei, wenn die Datei nicht bereits vorhanden ist und schreibt dann etwas. Es funktioniert großartig, das erste mal durch, wenn ich erstellen und sofort auf die Datei schreiben. Mein problem ist, dass das nächste mal dieser code wird ausgeführt und die Datei bereits angelegt ist, wirft er eine exception wenn ich versuche zu schreiben in die Datei. Bekomme ich die "Datei wird von einem anderen Prozess verwendet" - Fehler.
So scheint es, die ich brauche, um die Datei zu schließen, nachdem ich ihn erstellen? Ich sehe nicht, wie Sie dies tun, obwohl, aber es ist wahrscheinlich etwas sehr einfaches. Ich poste etwas code, aber es ist nicht wirklich notwendig, ich bin nur mit Vanille gewürzt string builder und stream writer.
Private Sub createFileLocations()
If Not Directory.Exists("./Path") Then
Directory.CreateDirectory("./Path")
End If
If clsGeneralSettings.Printer1 IsNot Nothing Then
If Not File.Exists("./Path/File1" & ".txt") Then
File.Create("./Path/File1" & ".txt")
End If
End If
End Sub
Private Sub AppendTextFile(randomId As String, PrintDate As Date, PrintName As String)
Try
Dim _stringBuilder As StringBuilder = New StringBuilder
Dim _StreamWriter As StreamWriter
Dim fileName As String
If PrintName = clsGeneralSettings.Printer1 Then
fileName = "./Path/File1" & ".txt"
qPrinter1.Enqueue(randomId)
If qPrinter1.Count > 10 Then
qPrinter1.Dequeue()
End If
_stringBuilder.AppendLine(PrintDate + " | " + randomId)
_StreamWriter = New StreamWriter(fileName, True)
End If
'Todo: Figure this out
Using _StreamWriter
_StreamWriter.Write(_stringBuilder.ToString)
_StreamWriter.Flush()
_StreamWriter.Close()
_stringBuilder.Clear()
End Using
Catch ex As Exception
End Try
End Sub
Duplikat von System.IO.File.Erstellen Sie sperren einer Datei.
OK. Sie sind frei, um es erneut hinzuzufügen, wenn Sie möchten; auch wenn Sie dies angegeben haben, in Ihre Frage (nehmen Sie beide VB.NET und C# answrs). In jedem Fall bin ich sicher, dass alle VB.NET problem perfekt gelöst von den Jungs kommen, um die VB.NET tag. Eigentlich dein problem ist nicht allzu schwierig...
BTW Sie nicht sogar brauchen, um die Nutzung Datei.Erstellen. StreamWriter kümmert sich um alle Eventualitäten (Datei vorhanden oder nicht). BTW2 innerhalb der Using-Anweisung, die Sie nicht brauchen, um zu verwenden .Flush oder .In der Nähe; Mit und kümmert sich um alle die "Entsorgung " Aktionen".
Danke, viel hilfreicher
InformationsquelleAutor Brandon | 2013-10-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den problematischen code/Linie ist dies
Datei.Erstellen gibt einen FileStream, dass Sie brauchen, um zu schließen, wenn Sie möchten, um später schreiben zu dieser Datei.
Ändern Sie Ihren code so, Folgendes sollte dein problem lösen.
Erstellen Sie außerdem eine Datei erstellt und öffnet einen stream auf die Datei zu schreiben, in
Ah, macht Sinn. Vielen Dank für die Hilfe!
"Datei.Create gibt ein FileStream, dass Sie schließen müssen". Dies ist die gleiche für c#
InformationsquelleAutor Jehof
Könnten Sie beseitigen die Datei erstellen, die Logik, die Sie haben und lassen Sie das StreamWriter die Datei erstellen.
http://msdn.microsoft.com/en-us/library/36b035cb%28v=vs.110%29.aspx
InformationsquelleAutor dbasnett
Haben Sie einen Blick auf die Dokumentation:
Haben Sie ein offenes handle auf die FileStream-nach dem ausführen der
File.Create()
Methode.InformationsquelleAutor Sir Crispalot
Sie verpasst haben, zu entsorgen, einige image-es kann aktuell sein image oder original image
Sie können dies tun, wie
CurrImage.Dispose() & OriginalImage.Dispose()
InformationsquelleAutor Badharudeen