Lesen und Schreiben von Daten: Realisieren Sie Funktionen zum Lesen und Schreiben von Daten basierend auf C#-Skripten in Unity

FileStream-Dateistream

FileStreamDie 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

  1. Standard: die Kodierung der aktuellen ANSI-Codepage des Betriebssystems
  2. Unicode: Kodierung im UTF-16-Format mit Little-Endian-Bytereihenfolge
  3. 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);
            }
        }
    }

Guess you like

Origin blog.csdn.net/qq_33021529/article/details/125508579