Freigeben über


Path-Klasse

Führt Operationen für String-Instanzen aus, die Datei- oder Verzeichnispfadinformationen enthalten. Diese Operationen werden plattformübergreifend durchgeführt.

Namespace: System.IO
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<ComVisibleAttribute(True)> _
Public NotInheritable Class Path
'Usage
Auf die Member einer statischen Klassen wird direkt ohne Instanz der Klasse zugegriffen.
[ComVisibleAttribute(true)] 
public static class Path
[ComVisibleAttribute(true)] 
public ref class Path abstract sealed
/** @attribute ComVisibleAttribute(true) */ 
public final class Path
ComVisibleAttribute(true) 
public final class Path

Hinweise

In .NET Framework wird der direkte Zugriff auf physikalische Datenträger über Pfade, bei denen es sich um Gerätenamen handelt, z. B. "\\.\PHYSICALDRIVE0", nicht unterstützt.

Ein Pfad ist eine Zeichenfolge, die den Speicherort einer Datei oder eines Verzeichnisses angibt. Ein Pfad zeigt nicht unbedingt auf einen Speicherort auf der Festplatte, er kann beispielsweise auch einem Speicherort im Arbeitsspeicher oder auf einem Gerät zugeordnet sein. Das genaue Format eines Pfades wird durch die aktuelle Plattform bestimmt. Beispielsweise kann auf einigen Systemen ein Pfad mit einem Laufwerk- oder Datenträgerbuchstaben beginnen, während dieses Element auf anderen Systemen nicht vorhanden ist. Auf einigen Systemen können Dateipfade Erweiterungen enthalten, die den Typ der in der Datei gespeicherten Informationen angeben. Das Format einer Dateinamenerweiterung ist von der Plattform abhängig. Einige Systeme beschränken beispielsweise Erweiterungen auf drei Zeichen, andere nicht. Die aktuelle Plattform bestimmt auch die Gruppe von Zeichen, die für die Trennung der Elemente eines Pfades verwendet wird, sowie die Gruppe von Zeichen, die bei der Angabe von Pfaden nicht verwendet werden kann. Aufgrund dieser Unterschiede sind die Felder der Path-Klasse sowie das genaue Verhalten einiger Member der Path-Klasse plattformabhängig.

Ein Pfad kann absolute oder relative Informationen über den Speicherort enthalten. Absolute Pfade geben einen Speicherort vollständig an: Die Datei oder das Verzeichnis kann unabhängig von der aktuellen Position eindeutig identifiziert werden. Relative Pfade geben einen Speicherort teilweise an: Die aktuelle Position wird als Startpunkt bei der Suche nach einer Datei verwendet, die durch einen relativen Pfad angegeben ist. Zum Bestimmen des aktuellen Verzeichnisses rufen Sie Directory.GetCurrentDirectory auf.

Die meisten Member der Path-Klasse wirken nicht mit dem Dateisystem zusammen und überprüfen nicht, ob die durch eine Pfadzeichenfolge angegebene Datei vorhanden ist. Member der Path-Klasse, die eine Pfadzeichenfolge ändern, z. B. ChangeExtension, haben keine Auswirkungen auf Namen von Dateien im Dateisystem. Path-Member validieren jedoch den Inhalt einer angegebenen Pfadzeichenfolge und lösen eine ArgumentException aus, wenn die Zeichenfolge Zeichen enthält, die in Pfadzeichenfolgen nicht gültig sind, entsprechend der Definition in InvalidPathChars. Auf Windows-basierten Desktopplattformen können beispielsweise die folgenden Zeichen für Pfadnamen ungültig sein: Anführungszeichen ("), Kleiner-als-Zeichen (<), Größer-als-Zeichen (>), der senkrechte Strich (|), Rücktastenzeichen (\b), NULL (\0), Tabulator (\t) und die Unicode-Zeichen 16 bis18 sowie 20 bis 25.

Mit Membern der Path-Klasse können Sie schnell und einfach allgemeine Operationen durchführen, z. B. bestimmen, ob eine Dateinamenerweiterung Teil eines Pfades ist, oder zwei Zeichenfolgen zu einem Pfadnamen kombinieren.

Alle Member der Path-Klasse sind statisch und können daher aufgerufen werden, ohne über eine Instanz eines Pfades verfügen zu müssen.

Hinweis

Bei Membern, die einen Pfad als Eingabezeichenfolge akzeptieren, muss dieser Pfad wohlgeformt sein. Andernfalls wird eine Ausnahme ausgelöst. Wenn beispielsweise ein Pfad voll gekennzeichnet 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 voll gekennzeichnet 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.

Da alle diese Operationen mit Zeichenfolgen durchgeführt werden, kann nicht sichergestellt werden, dass die Ergebnisse in allen Szenarien gültig sind. Die GetExtension-Methode analysiert beispielsweise eine ihr übergebene Zeichenfolge und gibt die Erweiterung aus dieser Zeichenfolge zurück. Dies bedeutet jedoch nicht, dass auf dem Datenträger eine Datei mit dieser Erweiterung vorhanden ist.

Ein Beispiel für die Verwendung dieser Klasse finden Sie im Beispielabschnitt weiter unten. 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.

Gewusst wie: Schreiben von Text in eine Datei

Schreiben in eine Textdatei.

Gewusst wie: Schreiben von Text in eine Datei

Lesen aus einer Textdatei.

Gewusst wie: Lesen aus einer Textdatei

Abrufen einer Dateinamenerweiterung.

GetExtension

Abrufen des voll qualifizierten Pfades einer Datei.

GetFullPath

Abrufen des Dateinamens sowie der Dateierweiterung aus einem Pfad.

GetFileName

Nur den Dateinamen aus einem Pfad abrufen.

GetFileNameWithoutExtension

Nur den Verzeichnisnamen aus einem Pfad abrufen.

GetDirectoryName

Ändern der Erweiterung einer Datei.

ChangeExtension

Bestimmen, ob ein Verzeichnis vorhanden ist.

Exists

Bestimmen, ob eine Datei vorhanden ist.

Exists

Beispiel

Im folgenden Codebeispiel werden einige der wichtigsten Member der Path-Klasse veranschaulicht.

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim path1 As String = "c:\temp\MyTest.txt"
        Dim path2 As String = "c:\temp\MyTest"
        Dim path3 As String = "temp"

        If Path.HasExtension(path1) Then
            Console.WriteLine("{0} has an extension.", path1)
        End If

        If Path.HasExtension(path2) = False Then
            Console.WriteLine("{0} has no extension.", path2)
        End If

        If Path.IsPathRooted(path3) = False Then
            Console.WriteLine("The string {0} contains no root information.", path3)
        End If

        Console.WriteLine("The full path of {0} is {1}.", path3, Path.GetFullPath(path3))
        Console.WriteLine("{0} is the location for temporary files.", Path.GetTempPath())
        Console.WriteLine("{0} is a file available for use.", Path.GetTempFileName())

        ' This code produces output similar to the following:
        ' c:\temp\MyTest.txt has an extension.
        ' c:\temp\MyTest has no extension.
        ' The string temp contains no root information.
        ' The full path of temp is D:\Documents and Settings\cliffc\My Documents\Visual Studio 2005\Projects\ConsoleApplication2\ConsoleApplication2\bin\Debug\temp.
        ' D:\Documents and Settings\cliffc\Local Settings\Temp\8\ is the location for temporary files.
        ' D:\Documents and Settings\cliffc\Local Settings\Temp\8\tmp3D.tmp is a file available for use.

    End Sub
End Class
using System;
using System.IO;

class Test 
{
    
    public static void Main() 
    {
        string path1 = @"c:\temp\MyTest.txt";
        string path2 = @"c:\temp\MyTest";
        string path3 = @"temp";

        if (Path.HasExtension(path1)) 
        {
            Console.WriteLine("{0} has an extension.", path1);
        }

        if (!Path.HasExtension(path2)) 
        {
            Console.WriteLine("{0} has no extension.", path2);
        }

        if (!Path.IsPathRooted(path3)) 
        {
            Console.WriteLine("The string {0} contains no root information.", path3);
        }

        Console.WriteLine("The full path of {0} is {1}.", path3, Path.GetFullPath(path3));
        Console.WriteLine("{0} is the location for temporary files.", Path.GetTempPath());
        Console.WriteLine("{0} is a file available for use.", Path.GetTempFileName());

        /* This code produces output similar to the following:
         * c:\temp\MyTest.txt has an extension.
         * c:\temp\MyTest has no extension.
         * The string temp contains no root information.
         * The full path of temp is D:\Documents and Settings\cliffc\My Documents\Visual Studio 2005\Projects\ConsoleApplication2\ConsoleApplication2\bin\Debug\temp.
         * D:\Documents and Settings\cliffc\Local Settings\Temp\8\ is the location for temporary files.
         * D:\Documents and Settings\cliffc\Local Settings\Temp\8\tmp3D.tmp is a file available for use.
         */
    }
}
using namespace System;
using namespace System::IO;
int main()
{
   String^ path1 = "c:\\temp\\MyTest.txt";
   String^ path2 = "c:\\temp\\MyTest";
   String^ path3 = "temp";
   if ( Path::HasExtension( path1 ) )
   {
      Console::WriteLine( "{0} has an extension.", path1 );
   }

   if (  !Path::HasExtension( path2 ) )
   {
      Console::WriteLine( "{0} has no extension.", path2 );
   }

   if (  !Path::IsPathRooted( path3 ) )
   {
      Console::WriteLine( "The string {0} contains no root information.", path3 );
   }

   Console::WriteLine( "The full path of {0} is {1}.", path3, Path::GetFullPath( path3 ) );
   Console::WriteLine( "{0} is the location for temporary files.", Path::GetTempPath() );
   Console::WriteLine( "{0} is a file available for use.", Path::GetTempFileName() );
   Console::WriteLine( "\r\nThe set of invalid characters in a path is:" );
   Console::WriteLine( "(Note that the wildcard characters '*' and '?' are not invalid.):" );
   Collections::IEnumerator^ myEnum = Path::InvalidPathChars->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Char c =  *safe_cast<Char^>(myEnum->Current);
      Console::WriteLine( c );
   }
}
import System.*;
import System.IO.*;

class Test
{
    public static void main(String[] args)
    {
        String path1 = "c:\\temp\\MyTest.txt";
        String path2 = "c:\\temp\\MyTest";
        String path3 = "temp";

        if (Path.HasExtension(path1)) {
            Console.WriteLine("{0} has an extension.", path1);
        }
        if (!(Path.HasExtension(path2))) {
            Console.WriteLine("{0} has no extension.", path2);
        }
        if (!(Path.IsPathRooted(path3))) {
            Console.WriteLine("The string {0} contains no root information.",
                path3);
        }

        Console.WriteLine("The full path of {0} is {1}.", path3, 
            Path.GetFullPath(path3));
        Console.WriteLine("{0} is the location for temporary files.",
            Path.GetTempPath());
        Console.WriteLine("{0} is a file available for use.", 
            Path.GetTempFileName());
        Console.WriteLine("\r\nThe set of invalid characters in a path is:");
        Console.WriteLine("(Note that the wildcard characters '*' and '?' "
            + "are not invalid.):");
        char c = ' ';
        for (int iCtr = 0; iCtr < Path.InvalidPathChars.get_Length(); iCtr++) {
            c = Path.InvalidPathChars[iCtr];
            Console.WriteLine(c);
        }
    } //main
} //Test

Vererbungshierarchie

System.Object
  System.IO.Path

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

Path-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