FileStream-Dateistream
FileStream
Die Klasse ist ein Stream, der hauptsächlich Dateien verfügbar macht und sowohl synchrone Lese- und Schreibvorgänge als auch asynchrone Lese- und Schreibvorgänge unterstützt. Namensräume:System.IO
Stellungnahme
FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
Parameterbeschreibung
-
filePath gibt den Pfad der zu lesenden Datei an
-
Die FileMode- Enumeration definiert verschiedene Möglichkeiten zum Öffnen von Dateien
-
Anhängen : Öffnen Sie eine vorhandene Datei und platzieren Sie den Cursor am Ende der Datei. Erstellen Sie die Datei, wenn sie nicht vorhanden ist.
-
Erstellen : Erstellen Sie eine neue Datei. Wenn die Datei bereits vorhanden ist, löschen Sie die alte Datei und erstellen Sie eine neue.
-
CreateNew : Gibt an, dass das Betriebssystem eine neue Datei erstellen oder eine Ausnahme auslösen soll, wenn die Datei bereits vorhanden ist.
-
Öffnen : Öffnen Sie eine vorhandene Datei. Wenn die Datei nicht vorhanden ist, wird eine Ausnahme ausgelöst.
-
OpenOrCreate : Geben Sie an, dass das Betriebssystem eine vorhandene Datei öffnen soll. Wenn die Datei nicht vorhanden ist, erstellen Sie eine neue Datei mit dem angegebenen Namen zum Öffnen.
-
Abschneiden : Öffnen Sie eine vorhandene Datei. Sobald die Datei geöffnet wird, wird sie auf die Größe Null Byte gekürzt. Wir können dann völlig neue Daten in die Datei schreiben, aber das ursprüngliche Erstellungsdatum der Datei beibehalten. Wenn die Datei nicht vorhanden ist, wird eine Ausnahme ausgelöst.
-
-
Die FileAccess- Enumeration definiert verschiedene Zugriffsrechte
-
Lesen : Erhalten Sie Lesezugriff auf die Datei, sodass Daten aus der Datei gelesen werden können (schreibgeschützt).
-
ReadWrite : Erhalten Sie die Zugriffsberechtigung zum Lesen und Schreiben von Dateien und können Sie dann Daten aus der Datei lesen und schreiben (lesbar und beschreibbar).
-
Schreiben : Erhalten Sie Schreibzugriff auf die Datei, sodass Daten in die Datei geschrieben werden können (nur Schreiben).
-
-
Die FileShare- Enumeration definiert die Zugriffsarten, die Sie auf dieselbe Datei haben können
-
Vererbbar : Ermöglicht die Vererbung von Dateihandles durch untergeordnete Prozesse.
-
Keine : Die Freigabe der aktuellen Datei ablehnen. Jede Anfrage zum Öffnen der Datei (durch diesen oder einen anderen Prozess) schlägt fehl, bis die Datei geschlossen wird.
-
Lesen : Ermöglicht das anschließende Öffnen der Datei zum Lesen. Wenn dieses Flag nicht angegeben ist, schlägt jede Anforderung zum Öffnen der Datei zum Lesen fehl, bis die Datei geschlossen wird. Selbst wenn dieses Flag angegeben ist, sind jedoch möglicherweise zusätzliche Berechtigungen erforderlich, um auf die Datei zugreifen zu können.
-
ReadWrite : Ermöglicht das anschließende Öffnen der Datei zum Lesen oder Schreiben. Wenn dieses Flag nicht angegeben ist, schlägt jede Anforderung zum Öffnen der Datei zum Lesen oder Schreiben fehl, bis die Datei geschlossen wird. Selbst wenn dieses Flag angegeben ist, sind jedoch möglicherweise zusätzliche Berechtigungen erforderlich, um auf die Datei zugreifen zu können.
-
Schreiben : Ermöglicht das anschließende Öffnen der Datei zum Schreiben. Wenn dieses Flag nicht angegeben ist, schlägt jede Anforderung zum Öffnen der Datei zum Schreiben fehl, bis die Datei geschlossen wird. Selbst wenn dieses Flag angegeben ist, sind jedoch möglicherweise zusätzliche Berechtigungen erforderlich, um auf die Datei zugreifen zu können.
-
Löschen : Ermöglicht das spätere Löschen der Datei.
-
StreamReader-Klasse: Dateistream lesen
In der Sprache C# wird die StreamReader- Klasse zum Lesen von Zeichenfolgen aus einem Stream verwendet. Es erbt von der TextReader-Klasse.
Konstrukteur
Es gibt viele Konstruktionsmethoden der StreamReader-Klasse. Die häufig verwendeten Konstruktionsmethoden sind wie folgt:
Konstruktionsmethode | veranschaulichen |
---|---|
StreamReader(Stream-Stream) | Erstellt eine Instanz der StreamReader-Klasse für den angegebenen Stream |
StreamReader(String-Pfad) | Erstellen Sie eine Instanz der StreamReader-Klasse für die Datei im angegebenen Pfad |
StreamReader(Stream stream,Encoding-Kodierung) | Initialisiert eine Instanz der StreamReader-Klasse für den angegebenen Stream mit der angegebenen Zeichenkodierung |
StreamReader (String-Pfad, Kodierungskodierung) | Initialisiert eine Instanz der StreamReader-Klasse für die angegebene Datei mit der angegebenen Zeichenkodierung |
Häufig verwendete Kodierungsformate in der Kodierung
- Standard: die Kodierung der aktuellen ANSI-Codepage des Betriebssystems
- Unicode: Kodierung im UTF-16-Format mit Little-Endian-Bytereihenfolge
- UTF-8: UTF-8-Kodierung
Mitgliedseigenschaften, Mitgliedsfunktionen
Häufig verwendete Eigenschaften und Methoden in der StreamReader-Klasse sind wie folgt:
Eigenschaft oder Methode | Wirkung |
---|---|
Codierung CurrentEncoding | Schreibgeschützte Eigenschaft, ruft die im aktuellen Stream verwendete Codierungsmethode ab |
bool EndOfSteam | Schreibgeschützte Eigenschaft, um abzurufen, ob sich die aktuelle Stream-Position am Ende des Streams befindet |
void Close() | Stream schließen |
int Peek() | Ganzzahl, um das nächste Zeichen im Stream abzurufen, oder -1, wenn kein Zeichen abgerufen wird. |
int Read() | eine Ganzzahl, um das nächste Zeichen im Stream abzurufen |
int Read(char[] buffer, int index, int count) | Liest die angegebene maximale Anzahl von Zeichen aus dem aktuellen Stream in den Puffer, beginnend an der angegebenen Indexposition |
Zeichenfolge ReadLine() | Liest eine Zeichenzeile aus dem aktuellen Stream und gibt die Daten als Zeichenfolge zurück |
Zeichenfolge ReadToEnd() | liest alle Zeichen von der aktuellen Position des Streams bis zum Ergebnis |
Codebeispiel
Rufen Sie zuerst den Dateistream ab und erstellen Sie dann einen StreamReader über den Dateistream, um den Dateistream zu lesen, oder erstellen Sie direkt einen StreamReader über den Pfad, um den Dateistream zu lesen (siehe die Methode zum Schreiben eines Dateistreams unten).
class Program
{
static void Main(string[] args)
{
//文件路径
string filePath = Application.dataPath + "/Data/task.csv";
//按照文件路径打开获取文件流,并获取该文件流的编码格式
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
//使用文件流相应的字符编码格式来读取文件流
StreamReader streamReader = new StreamReader(fileStream);
//记录每次读取的一行记录
string strLine;
//逐行读取CSV中的数据
while ((strLine = streamReader.ReadLine()) != null)
{
//对数据进行操作
Console.WriteLine(strLine);
}
streamReader.Close();
}
}
StreamWriter-Klasse: In Datei schreiben
In der C#-Sprache wird die StreamWriter-Klasse verwendet, um Zeichenfolgen in den Stream zu schreiben.
Konstrukteur
Es gibt viele Konstruktionsmethoden der StreamWriter-Klasse. Die am häufigsten verwendeten Konstruktionsmethoden sind wie folgt:
Konstruktionsmethode | veranschaulichen |
---|---|
StreamWriter(Stream-Stream) | Erstellt eine Instanz der StreamWriter-Klasse für den angegebenen Stream |
StreamWriter(String-Pfad) | Erstellen Sie eine Instanz der StreamWriter-Klasse für die Datei im angegebenen Pfad |
StreamWriter(Stream Stream,Encoding-Kodierung) | Initialisiert eine Instanz der StreamWriter-Klasse für den angegebenen Stream mit der angegebenen Zeichenkodierung |
StreamWriter (String-Pfad, Kodierungskodierung) | Initialisiert eine Instanz der StreamWriter-Klasse für die angegebene Datei mit der angegebenen Zeichenkodierung |
Mitgliedseigenschaften, Mitgliedsfunktionen
Häufig verwendete Eigenschaften und Methoden in der StreamWriter-Klasse sind wie folgt:
Eigenschaft oder Methode | Wirkung |
---|---|
bool AutoFlush | Attribut, abrufen oder festlegen, ob der Puffer automatisch aktualisiert werden soll |
Kodierung. Kodierung | Schreibgeschützte Eigenschaft, ruft die im aktuellen Stream verwendete Codierungsmethode ab |
void Close() | Stream schließen |
void Flush() | Spülpuffer |
int Write(char value) | schreibt Zeichen in den Stream |
void WriteLine(char value) | schreibt eine neue Zeichenzeile in den Stream |
Aufgabe WriteAsync (char-Wert) | schreibt Zeichen asynchron in den Stream |
Aufgabe WriteLineAsync(char value) | schreibt Zeichen asynchron in einen Stream |
Codebeispiel
Erstellen Sie direkt einen StreamWriter über den Pfad, um den Dateistream zu lesen, oder rufen Sie zuerst den Dateistream ab und erstellen Sie dann über den Dateistream einen StreamReader, um den Dateistream zu lesen (siehe oben die Methode zum Lesen des Dateistreams).
public void WriteCsv(string strs, string path)
{
if (!File.Exists(path))
{
File.Create(path).Dispose();
}
else
{
File.Delete(path);
File.Create(path).Dispose();
}
string mystr;
//UTF-8方式保存,true表示追加的写入方式,改成false就是直接覆盖写入
using (StreamWriter stream = new StreamWriter(path, true, Encoding.UTF8))
{
for (int i = 0; i < Data.SolList.Count; i++)
{
mystr = "";
Solution sol = Data.SolList[i];
//mystr保存一行数据,不同列的元素之间使用 "," 隔开
mystr = sol.SolutionID.ToString() + "," + sol.MakeSpan.ToString() + "," + sol.WaitTime.ToString() + "," + sol.Balance.ToString() + "," + sol.Category;
stream.WriteLine(mystr);
}
}
}