FileInfo-Klasse
Stellt Instanzmethoden zum Erstellen, Kopieren, Löschen, Verschieben und Öffnen von Dateien bereit und unterstützt das Erstellen von FileStream-Objekten. Die Klasse kann nicht geerbt werden.
Namespace: System.IO
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class FileInfo
Inherits FileSystemInfo
'Usage
Dim instance As FileInfo
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class FileInfo : FileSystemInfo
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class FileInfo sealed : public FileSystemInfo
/** @attribute SerializableAttribute() */
/** @attribute ComVisibleAttribute(true) */
public final class FileInfo extends FileSystemInfo
SerializableAttribute
ComVisibleAttribute(true)
public final class FileInfo extends FileSystemInfo
Hinweise
Verwenden Sie die FileInfo-Klasse für typische Operationen, z. B. das Kopieren, Verschieben, Umbenennen, Erstellen, Öffnen, Löschen und Anfügen von Dateien.
Viele FileInfo-Methoden geben beim Erstellen oder Öffnen von Dateien andere E/A-Typen zurück. Sie können mithilfe dieser anderen Typen Dateien weiter bearbeiten. Weitere Informationen finden Sie unter bestimmten FileInfo-Membern, z. B. Open, OpenRead, OpenText, CreateText oder Create.
Wenn Sie ein Objekt mehrmals wiederverwenden, verwenden Sie statt der entsprechenden statischen Methoden der File-Klasse die Instanzmethode von FileInfo, da eine Sicherheitsüberprüfung nicht immer erforderlich ist.
Standardmäßig wird allen Benutzern voller Lese- und Schreibzugriff für alle neuen Dateien gewährt.
In der folgenden Tabelle werden die Enumerationen beschrieben, die zum Anpassen des Verhaltens verschiedener FileInfo-Methoden verwendet werden.
Enumeration |
Beschreibung |
---|---|
Gibt Lese- und Schreibzugriff auf eine Datei an. |
|
Gibt die Ebene des gewährten Zugriffs für eine Datei an, die bereits verwendet wird. |
|
Gibt an, ob der Inhalt einer vorhandenen Datei beibehalten oder überschrieben wird und ob Anforderungen zum Erstellen einer vorhandenen Datei eine Ausnahme auslösen. |
Hinweis
Bei Membern, die einen Pfad als Eingabezeichenfolge akzeptieren, muss dieser Pfad wohlgeformt sein. Andernfalls wird eine Ausnahme ausgelöst. Wenn beispielsweise ein Pfad vollqualifiziert ist, aber mit einem Leerzeichen beginnt, wird der Pfad in Methoden der Klasse nicht gekürzt. Daher ist der Pad falsch formatiert, und es wird eine Ausnahme ausgelöst. Ebenso kann ein Pfad oder eine Kombination von Pfaden nicht zweimal vollqualifiziert werden. Auch "c:\temp c:\windows" löst beispielsweise in den meisten Fällen eine Ausnahme aus. Bei der Verwendung von Methoden, die eine Pfadzeichenfolge akzeptieren, müssen Sie sicherstellen, dass die Pfade wohlgeformt sind.
Bei Membern, die einen Pfad akzeptieren, kann der Pfad auf eine Datei oder nur auf ein Verzeichnis verweisen. Der angegebene Pfad kann auch auf einen relativen Pfad oder auf einen UNC-Pfad (Universal Naming Convention) für einen Server- und Freigabenamen verweisen. Beispielsweise sind alle folgenden Pfade zulässig:
"c:\\MyDir\\MyFile.txt" in C# oder "c:\MyDir\MyFile.txt" in Visual Basic.
"c:\\MyDir" in C# oder "c:\MyDir" in Visual Basic.
"MyDir\\MySubdir" in C# oder "MyDir\MySubDir" in Visual Basic.
"\\\\MyServer\\MyShare" in C# oder "\\MyServer\MyShare" in Visual Basic.
In der folgenden Tabelle sind Beispiele für andere typische oder verwandte E/A-Aufgaben aufgeführt.
Aufgabe |
Beispiel in diesem Thema |
---|---|
Erstellen einer Textdatei. |
|
Schreiben in eine Textdatei. |
|
Lesen aus einer Textdatei. |
|
Anfügen von Text an eine Datei. |
|
Umbenennen oder Verschieben einer Datei. |
|
Löschen einer Datei. |
|
Kopieren einer Datei. |
|
Abrufen der Größe einer Datei. |
|
Abrufen der Attribute einer Datei. |
|
Festlegen der Attribute einer Datei. |
|
Bestimmen, ob eine Datei vorhanden ist. |
|
Lesen aus einer Binärdatei. |
Gewusst wie: Lesen und Schreiben einer neu erstellten Datendatei |
Schreiben in eine Binärdatei. |
Gewusst wie: Lesen und Schreiben einer neu erstellten Datendatei |
Abrufen einer Dateierweiterung. |
|
Abrufen des vollqualifizierten Pfads einer Datei. |
|
Abrufen des Dateinamens sowie der Dateierweiterung aus einem Pfad. |
|
Ändern der Erweiterung einer Datei. |
Hinweis zu Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows CE: Da Dateisysteme für Geräte auf verschiedene Weise verwendet werden, unterstützt .NET Compact Framework das Abrufen und Festlegen von Dateiattributen nicht.
Beispiel
Das folgende Beispiel veranschaulicht einige der wichtigsten Member der FileInfo-Klasse.
Imports System
Imports System.IO
Public Class Test
Public Shared Sub Main()
Dim path1 As String = Path.GetTempFileName()
Dim path2 As String = Path.GetTempFileName()
Dim fi As FileInfo = New FileInfo(path1)
If fi.Exists = False Then
'Create a file to write to.
Dim sw As StreamWriter = fi.CreateText()
sw.WriteLine("Hello")
sw.WriteLine("And")
sw.WriteLine("Welcome")
sw.Flush()
sw.Close()
End If
Try
'Open the file to read from.
Dim sr As StreamReader = fi.OpenText()
Do While sr.Peek() >= 0
Console.WriteLine(sr.ReadLine())
Loop
sr.Close()
Dim fi2 As FileInfo = New FileInfo(path2)
'Ensure that the target does not exist.
fi2.Delete()
'Copy the file.
fi.CopyTo(path2)
Console.WriteLine("{0} was copied to {1}.", path1, path2)
'Delete the newly created file.
fi2.Delete()
Console.WriteLine("{0} was successfully deleted.", path2)
Catch e As Exception
Console.WriteLine("The process failed: {0}.", e.ToString())
End Try
End Sub
End Class
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = Path.GetTempFileName();
FileInfo fi1 = new FileInfo(path);
if (!fi1.Exists)
{
//Create a file to write to.
using (StreamWriter sw = fi1.CreateText())
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
}
//Open the file to read from.
using (StreamReader sr = fi1.OpenText())
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
}
try
{
string path2 = Path.GetTempFileName();
FileInfo fi2 = new FileInfo(path2);
//Ensure that the target does not exist.
fi2.Delete();
//Copy the file.
fi1.CopyTo(path2);
Console.WriteLine("{0} was copied to {1}.", path, path2);
//Delete the newly created file.
fi2.Delete();
Console.WriteLine("{0} was successfully deleted.", path2);
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}
using namespace System;
using namespace System::IO;
int main()
{
String^ path = Path::GetTempFileName();
FileInfo^ fi1 = gcnew FileInfo( path );
if ( !fi1->Exists )
{
//Create a file to write to.
StreamWriter^ sw = fi1->CreateText();
try
{
sw->WriteLine( "Hello" );
sw->WriteLine( "And" );
sw->WriteLine( "Welcome" );
}
finally
{
if ( sw )
delete (IDisposable^)sw;
}
}
//Open the file to read from.
StreamReader^ sr = fi1->OpenText();
try
{
String^ s = "";
while ( s = sr->ReadLine() )
{
Console::WriteLine( s );
}
}
finally
{
if ( sr )
delete (IDisposable^)sr;
}
try
{
String^ path2 = Path::GetTempFileName();
FileInfo^ fi2 = gcnew FileInfo( path2 );
//Ensure that the target does not exist.
fi2->Delete();
//Copy the file.
fi1->CopyTo( path2 );
Console::WriteLine( "{0} was copied to {1}.", path, path2 );
//Delete the newly created file.
fi2->Delete();
Console::WriteLine( "{0} was successfully deleted.", path2 );
}
catch ( Exception^ e )
{
Console::WriteLine( "The process failed: {0}", e );
}
}
import System.*;
import System.IO.*;
class Test
{
public static void main(String[] args)
{
String path = "c:\\temp\\MyTest.txt";
FileInfo fi1 = new FileInfo(path);
if (!(fi1.get_Exists())) {
//Create a file to write to.
StreamWriter sw = fi1.CreateText();
try {
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
finally {
sw.Dispose();
}
}
//Open the file to read from.
StreamReader sr = fi1.OpenText();
try {
String s = "";
while ((s = sr.ReadLine())!= null) {
Console.WriteLine(s);
}
}
finally {
sr.Dispose();
}
try {
String path2 = path + "temp";
FileInfo fi2 = new FileInfo(path2);
//Ensure that the target does not exist.
fi2.Delete();
//Copy the file.
fi1.CopyTo(path2);
Console.WriteLine("{0} was copied to {1}.", path, path2);
//Delete the newly created file.
fi2.Delete();
Console.WriteLine("{0} was successfully deleted.", path2);
}
catch (System.Exception e) {
Console.WriteLine("The process failed: {0}", e.ToString());
}
} //main
} //Test
Vererbungshierarchie
System.Object
System.MarshalByRefObject
System.IO.FileSystemInfo
System.IO.FileInfo
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
FileInfo-Member
System.IO-Namespace
Weitere Ressourcen
Datei- und Stream-E/A
Gewusst wie: Lesen aus einer Textdatei
Gewusst wie: Schreiben von Text in eine Datei
Grundlegende Datei-E/A
Gewusst wie: Lesen und Schreiben einer neu erstellten Datendatei