Gleichzeitiger Zugriff auf Dateien
Das Lesen einer Datei, in die gerade von einem anderen Programm geschrieben wird, stellt eine einzigartige Herausforderung dar. Standardmethoden zum Lesen von Dateien schlagen häufig fehl und lösen Ausnahmen aus, die auf den Sperrstatus der Datei hinweisen.
Lösungen für gleichzeitigen Dateizugriff
Um eine solche Datei erfolgreich zu lesen, benötigen Sie eine Strategie, die gleichzeitigen Zugriff ermöglicht. Eine gängige Lösung besteht darin, die Datei in einem Modus zu öffnen, der sowohl Lesen als auch Schreiben ermöglicht.
Implementierung in C#/.NET
Der folgende C#-Codeausschnitt demonstriert diesen Ansatz mit FileStream
und StreamReader
:
<code class="language-csharp">using System; using System.IO; namespace ConcurrentFileReader { class Program { static void Main(string[] args) { string filePath = "c:\test.txt"; // Open the file for reading and writing concurrently FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); StreamReader reader = new StreamReader(fileStream); // Read and process the file line by line while (!reader.EndOfStream) { string line = reader.ReadLine(); // Process the line Console.WriteLine(line); } // Close resources reader.Close(); fileStream.Close(); } } }</code>
Der Schlüssel ist FileShare.ReadWrite
. Dadurch wird sichergestellt, dass die Datei in einem gemeinsamen Modus geöffnet wird, sodass gleichzeitige Lese- und Schreibvorgänge ohne Unterbrechung möglich sind. Das Programm kann nun den Inhalt der Datei lesen, während ein anderer Prozess weiterhin darauf schreibt. Beachten Sie, dass die gelesenen Daten je nach Aktivität des Schreibvorgangs möglicherweise unvollständig sind oder zu einem bestimmten Zeitpunkt nur einen Teil des Dateiinhalts widerspiegeln.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Datei lesen, die von einem anderen Programm verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!