English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Hier lernen Sie, wie Sie die FileInfo-Klasse verwenden, um physische Dateien zu lesen/Die FileInfo-Klasse bietet die gleichen Funktionen wie die statische File-Klasse, aber Sie können die Lesefunktionen der Datei durch eigenes Schreiben von Code für das Lesen oder Schreiben von Bytes steuern.
Wichtige Eigenschaften und Methoden von FileInfo: | Verwendung |
---|---|
Eigenschaften | Directory |
Geben Sie die Instanz des übergeordneten Verzeichnisses zurück. | DirectoryName |
Geben Sie den String zurück, der den vollständigen Pfad des Verzeichnisses darstellt. | Exists |
Geben Sie einen Wert zurück, der anzeigt, ob die Datei existiert. | Geben Sie den String zurück, der die Dateierweiterung darstellt. |
FullName | Geben Sie den vollständigen Pfad der Datei oder des Verzeichnisses zurück. |
IsReadOnly | Geben Sie oder stellen Sie einen Wert ein, der bestimmen soll, ob die aktuelle Datei schreibgeschützt ist. |
LastAccessTime | Geben Sie oder stellen Sie die Zeit der letzten Zugriff auf die aktuelle Datei oder das aktuelle Verzeichnis ein. |
LastWriteTime | Geben Sie oder stellen Sie die Zeit der letzten Schreiboperation auf die aktuelle Datei oder das aktuelle Verzeichnis ein. |
Length | Geben Sie die Größe der aktuellen Datei in Bytes zurück. |
Name | Geben Sie den Dateinamen der Datei zurück. |
Methode | Verwendung |
---|---|
AppendText | Erstellen Sie einen StreamWriter, der Text in die Datei anhängt, die von diesem FileInfo-Objekt dargestellt wird. |
CopyTo | Kopieren Sie die vorhandene Datei in eine neue Datei, ohne die vorhandene Datei zu überschreiben. |
Create | Erstellen Sie eine Datei. |
CreateText | Erstellen Sie einen StreamWriter, der Text in eine neue Textdatei schreibt. |
Decrypt | Entschlüsseln Sie die von dem aktuellen Konto verschlüsselten Dateien mit dem Encrypt-Methode. |
Delete | Löschen Sie die angegebene Datei. |
Encrypt | Verschlüsseln Sie die Datei, sodass nur der für die Verschlüsselung der Datei verwendete Account die Datei entschlüsseln kann. |
GetAccessControl | Erhalten Sie ein FileSecurity-Objekt, das die Zugriffssteuerungsliste (ACL) Einträge der angegebenen Datei umschließt. |
MoveTo | Bewegen Sie die angegebene Datei an einen neuen Ort und bieten Sie die Option, einen neuen Dateinamen anzugeben. |
Open | Öffnen Sie eine Datei in der angegebenen FileMode. |
OpenRead | Erstellen Sie einen nur lesbaren FileStream. |
OpenText | Erstellen Sie ein mit UTF8Ein codierter StreamReader, dessen Encoder Textdateien aus bestehenden Textdateien lesen kann. |
OpenWrite | Erstellen Sie einen nur lesbaren FileStream. |
Ersetzen | Ersetzen Sie die Inhalte der angegebenen Datei durch diejenigen, die durch das aktuelle FileInfo-Objekt beschrieben werden, löschen Sie die ursprüngliche Datei und erstellen Sie eine Sicherungskopie der ersetzten Datei. |
ToString | als String zurückgibt. |
Der folgende Beispiel zeigt, wie man manuell Bytes aus einer Datei liest und sie dann mit UTF8Codierung in Strings umwandeln:
Beispiel: Datei mit FileInfo-Klasse lesen
//为指定路径创建FileInfo对象 FileInfo fi = new FileInfo(@"D:\DummyFile.txt"); //打开文件进行读/写 FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); //Erstellen Sie ein Byte-Array der Größe des FileStream byte[] fileBytes = new byte[fs.Length]; //Definieren Sie den Zähler, um zu überprüfen, wie viele Bytes gelesen werden sollen. Der Zähler wird bei jedem gelesenen Byte verringert int numBytesToRead = (int)fileBytes.Length; //Der Zähler zeigt die Anzahl der gelesenen Bytes an int numBytesRead = 0; //Iterieren Sie, bis alle Bytes aus FileStream gelesen wurden while (numBytesToRead > 0) { int n = fs.Read(fileBytes, numBytesRead, numBytesToRead); if (n == 0) break; numBytesRead += n; numBytesToRead -= n; } //Nachdem alle Bytes aus FileStream gelesen wurden, können Sie UTF8Codierung in einen String umwandeln string filestring = Encoding.UTF8.GetString(fileBytes);
Wie im obigen Code gezeigt, müssen Sie viel Code schreiben, um aus FileStream zu lesen/Schreiben Sie einen String. Mit StreamReader und StreamWriter kann dies ebenfalls einfach erreicht werden/Schreiboperationen.
Der folgende Beispiel zeigt, wie einfach es mit StreamReader ist, Strings aus einer Datei zu lesen:
Beispiel: Datei mit StreamReader lesen
//为指定路径创建FileInfo对象 FileInfo fi = new FileInfo(@"D:\DummyFile.txt"); //打开文件进行读/写 FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read); //Erstellen Sie ein StreamReader-Objekt, indem Sie das FileStream-Objekt übergeben, das bearbeitet werden soll StreamReader sr = new StreamReader(fs); //Verwenden Sie die Methode ReadToEnd, um den gesamten Inhalt aus der Datei zu lesen string fileContent = sr.ReadToEnd(); //操作后关闭StreamReader对象 sr.Close(); fs.Close();
注意,fi.Open() 它具有三个参数:
第一个参数是FileMode,用于创建和打开文件(如果文件不存在);
第二个参数 FileAccess 表示读取操作;
第三个参数是在打开文件时与其他用户共享文件以供阅读。
下面的示例显示 StreamWriter 如何使将字符串写入文件变得更容易:
示例:使用StreamWriter将文本写入文件
//为指定路径创建FileInfo对象 FileInfo fi = new FileInfo(@"D:\DummyFile.txt"); //打开文件进行读/写 FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read); //创建StreamWriter对象以将字符串写入FileSream StreamWriter sw = new StreamWriter(fs); sw.WriteLine("Eine weitere Zeile von streamwriter"); sw.Close();
不能同时对同一个 FileStream 对象执行读和写操作。如果您已经在读取文件,请创建一个单独的 FileStream 对象以写入同一文件,如下所示:
示例:StreamReader和StreamWriter
//为DummyFile.txt创建FileInfo对象 FileInfo fi = new FileInfo(@"D:\DummyFile.txt"); //打开DummyFile.txt进行读取操作 FileStream fsToRead = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); //打开DummyFile.txt进行写操作 FileStream fsToWrite = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); //获取StreamReader StreamReader sr = new StreamReader(fsToRead); //使用StreamReader对象读取所有文本 string fileContent = sr.ReadToEnd(); sr.Close(); //获取StreamWriter StreamWriter sw = new StreamWriter(fsToWrite); //Schreiben Sie mit StreamWriter einige Texte sw.WriteLine("Eine weitere Zeile von streamwriter"); sw.Close(); //Schließen Sie alle Stream-Objekte fsToRead.Close(); fsToWrite.Close();
Daher können Sie die Klassen FileInfo, StreamReader und StreamWriter verwenden, um aus physischen Dateien zu lesen/Inhalte schreiben.