Lesen Sie den aktuellen Inhalt der Textdatei mit FileStream-und diese Optionen c#
Brauche ich zum öffnen einer text-Datei in C# die Verwendung von FileStream und mit den Optionen, die unten genannten
var fileStream = new FileStream(filePath,
FileMode.Open,
FileAccess.Read,
FileShare.Read, 64 * 1024,
(FileOptions)FILE_FLAG_NO_BUFFERING |
FileOptions.WriteThrough & FileOptions.SequentialScan);
Die text-Datei enthält eine "1" oder "0" und nach Erhalt der Ergebnisse werde ich weisen Sie den Inhalt der Textdatei in eine string-variable. Falls du interessiert bist, ich brauche die oben genannten Optionen, um zu vermeiden, Windows Lesen von text-Dateien aus dem cache.
System.IO.File.ReadAllText()
... ist nicht gut genug.
Wäre jemand so freundlich, schreiben Sie einfachen sub integriert diese Anforderungen für mich bitte, wie die Beispiele, die ich bisher gesehen habe, beinhalten die Arbeit mit bytes und Puffer (einen Bereich, den ich wirklich brauchen, um arbeiten zu dieser Zeit) und belässt es dabei.
Dank
Ich vermute, weil Sie nicht angeben, die die Freigabe des Zustands.
InformationsquelleAutor user1776480 | 2013-01-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht so etwas wie:
assignedvariable halten wird wahr, wenn die Datei enthält eine 1 und false, wenn er 0 enthält.
Sorry, wenn dies wurde beantwortet schon Leute die post sehr schnell hier.
InformationsquelleAutor TheKingDave
Können Sie eine StreamReader zu Lesen aus dem stream:
InformationsquelleAutor Hans Kesting
oder
Wird sowohl theoretisch verwenden Sie den windows-Datei-cache.
Lesen diese für mehr Verständnis und für einige der Einschränkungen auf FILE_FLAG_NO_BUFFERING und auch Lesen diese für eine ähnliche stackoverflow-Frage
InformationsquelleAutor Paul Zahra
Dies ist, was ich getan habe Lesen Sie ein array von bytes mit FileStream und es funktionierte gut. Ich habe erweitert, die namespaces für das wohl der technische Klarheit. Sollten Sie wählte die FileShare und FileAccess Parameter wie pro Ihre Szenario.
Gewusst wie: Lesen den Inhalt der Datei als ein String und kein array von bytes?
Warum ist StreamReader besser als die Konvertierung der byte[] zu string mit der gewünschten Codierung?
Die StreamReader-Klasse ist mächtig, weil Sie untersuchen die header-bytes und bestimmen Sie die Kodierung für Sie. Sie müssen nicht verwenden, System.Text.- Codierung.UTF8.GetString().
Warum die Verwendung von FileStream und warum nicht das System.IO.Datei.ReadAllBytes/ReadAllText ?
Ich wollte eine präzise Steuerung auf dem file-locking-Mechanismus. In meinem Fall hatte ich einen Prozess, der polling-einen Ordner für eingehende Dateien. Ich wollte sicher sein, dass, wenn ich die Datei Lesen, die langsam Laufenden Prozess auf dem anderen Ende abgeschlossen hatte, seinen job und die Datei war bereit für meinen Prozess zu Lesen und zu analysieren.
Was sind die Nachteile der liest die gesamte Datei als ein einziges Byte-array?
Wenn Sie im Begriff sind zu Lesen, eine sehr große Datei alle auf einmal, dann stellen Sie einen höheren Bedarf an RAM. Denken Sie an eine Anwendung, die macht Filme. Sie haben eine 100MB-movie-Datei. Sie wollen nicht zu Lesen die gesamte Datei auf einmal. Sie hätten es lieber gelesen, in Blöcken von sagen wir 100KB in einer Zeit, die das Rendern der Szenen und fahren Sie dann auf den nächsten Brocken. Dies macht Ihre Anwendung skalierbar. Ihre Film-Anmeldung ist nun mehr skalierbar. Sie verarbeiten sehr großer Filme ohne in die Gefahr des Systems.IO.OutOfMemoryException.
InformationsquelleAutor Sau