English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# FileInfo

 C# Objektorientiert (OOP)/Schreiboperationen.

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.

Schreiboperationen haben mehr Kontrolle.

Wichtige Eigenschaften und Methoden von FileInfo:Verwendung
EigenschaftenDirectory
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.
FullNameGeben Sie den vollständigen Pfad der Datei oder des Verzeichnisses zurück.
IsReadOnlyGeben Sie oder stellen Sie einen Wert ein, der bestimmen soll, ob die aktuelle Datei schreibgeschützt ist.
LastAccessTimeGeben Sie oder stellen Sie die Zeit der letzten Zugriff auf die aktuelle Datei oder das aktuelle Verzeichnis ein.
LastWriteTimeGeben Sie oder stellen Sie die Zeit der letzten Schreiboperation auf die aktuelle Datei oder das aktuelle Verzeichnis ein.
LengthGeben Sie die Größe der aktuellen Datei in Bytes zurück.
NameGeben Sie den Dateinamen der Datei zurück.
MethodeVerwendung
AppendTextErstellen Sie einen StreamWriter, der Text in die Datei anhängt, die von diesem FileInfo-Objekt dargestellt wird.
CopyToKopieren Sie die vorhandene Datei in eine neue Datei, ohne die vorhandene Datei zu überschreiben.
CreateErstellen Sie eine Datei.
CreateTextErstellen Sie einen StreamWriter, der Text in eine neue Textdatei schreibt.
DecryptEntschlüsseln Sie die von dem aktuellen Konto verschlüsselten Dateien mit dem Encrypt-Methode.
DeleteLöschen Sie die angegebene Datei.
EncryptVerschlüsseln Sie die Datei, sodass nur der für die Verschlüsselung der Datei verwendete Account die Datei entschlüsseln kann.
GetAccessControlErhalten Sie ein FileSecurity-Objekt, das die Zugriffssteuerungsliste (ACL) Einträge der angegebenen Datei umschließt.
MoveToBewegen 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.
OpenReadErstellen Sie einen nur lesbaren FileStream.
OpenTextErstellen Sie ein mit UTF8Ein codierter StreamReader, dessen Encoder Textdateien aus bestehenden Textdateien lesen kann.
OpenWriteErstellen Sie einen nur lesbaren FileStream.
ErsetzenErsetzen 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.
ToStringals 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.