Path Klasa

Definicja

Wykonuje operacje na String wystąpieniach zawierających informacje o pliku lub ścieżce katalogu. Te operacje są wykonywane w sposób międzyplatformowy.

public ref class Path abstract sealed
public ref class Path sealed
public static class Path
public sealed class Path
[System.Runtime.InteropServices.ComVisible(true)]
public static class Path
type Path = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type Path = class
Public Class Path
Public NotInheritable Class Path
Dziedziczenie
Path
Atrybuty

Przykłady

W poniższym przykładzie przedstawiono niektóre główne elementy członkowskie Path klasy.

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 );
   }
}
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.
         */
    }
}
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

Uwagi

Ścieżka to ciąg, który udostępnia lokalizację pliku lub katalogu. Ścieżka nie musi wskazywać lokalizacji na dysku; na przykład ścieżka może być mapowana na lokalizację w pamięci lub na urządzeniu. Dokładny format ścieżki zależy od bieżącej platformy. Na przykład w niektórych systemach ścieżka może zaczynać się od dysku lub litery woluminu, podczas gdy ten element nie jest obecny w innych systemach. W niektórych systemach ścieżki plików mogą zawierać rozszerzenia, które wskazują typ informacji przechowywanych w pliku. Format rozszerzenia nazwy pliku jest zależny od platformy; na przykład niektóre systemy ograniczają rozszerzenia do trzech znaków (takich jak FAT16 powszechnie używane w mniejszym magazynie flash i starszych wersjach ISO 9660 używanych na nośniku optycznym), a inne nie. Bieżąca platforma określa również zestaw znaków używany do oddzielania elementów ścieżki oraz zestawu znaków, których nie można używać podczas określania ścieżek. Ze względu na te różnice pola Path klasy, a także dokładne zachowanie niektórych elementów członkowskich Path klasy są zależne od platformy.

Ścieżka może zawierać informacje o lokalizacji bezwzględnej lub względnej. Ścieżki bezwzględne w pełni określają lokalizację: plik lub katalog można jednoznacznie zidentyfikować niezależnie od bieżącej lokalizacji. Ścieżki względne określają lokalizację częściową: bieżąca lokalizacja jest używana jako punkt początkowy podczas lokalizowania pliku określonego przy użyciu ścieżki względnej. Aby określić bieżący katalog, wywołaj metodę Directory.GetCurrentDirectory.

Program .NET Core 1.1 i nowsze wersje oraz .NET Framework 4.6.2 i nowsze wersje obsługują również dostęp do obiektów systemu plików, które są nazwami urządzeń, takimi jak "\\?\ C:\".

Aby uzyskać więcej informacji na temat formatów ścieżek plików w Windows, zobacz Formaty ścieżki plików w systemach Windows.

Większość elementów członkowskich Path klasy nie współdziała z systemem plików i nie weryfikuje istnienia pliku określonego przez ciąg ścieżki. Path składowe klasy modyfikujące ciąg ścieżki, takie jak ChangeExtension, nie mają wpływu na nazwy plików w systemie plików.

Niektórzy Path członkowie weryfikują zawartość określonego ciągu ścieżki i zgłaszają ArgumentException , czy ciąg zawiera znaki, które nie są prawidłowe w ciągach ścieżki, zgodnie z definicją w znakach zwracanych z GetInvalidPathChars metody . Na przykład na platformach klasycznych opartych na Windows nieprawidłowe znaki ścieżki mogą zawierać cudzysłów ("), mniej niż (<), greater than (>), potok (|), backspace (b), null (\\0) i znaki Unicode od 16 do 18 i 20 do 25. To zachowanie weryfikacji różni się w zależności od wersji platformy .NET:

  • W wersji .NET Framework i .NET Core starszych niż 2.1: wszyscy Path członkowie, którzy przyjmują ścieżkę jako argument, zgłaszają ArgumentException błąd, jeśli wykryją nieprawidłowe znaki ścieżki.

  • W programie .NET Core 2.1 i nowszych wersjach: GetFullPath jest jedynym elementem członkowskim, który zgłasza ArgumentException wartość , jeśli ciąg zawiera nieprawidłowe znaki ścieżki.

Elementy członkowskie Path klasy umożliwiają szybkie i łatwe wykonywanie typowych operacji, takich jak określanie, czy rozszerzenie nazwy pliku jest częścią ścieżki, i łączenie dwóch ciągów w jedną nazwę ścieżki.

Wszystkie elementy członkowskie Path klasy są statyczne i dlatego mogą być wywoływane bez wystąpienia ścieżki.

Uwaga

W elementach członkowskich, które akceptują ścieżkę jako ciąg wejściowy, ta ścieżka musi być dobrze sformułowana lub zgłaszany jest wyjątek. Jeśli na przykład ścieżka jest w pełni kwalifikowana, ale zaczyna się od spacji, ścieżka nie jest przycinana w metodach klasy. W związku z tym ścieżka jest źle sformułowana i zgłaszany jest wyjątek. Podobnie ścieżka lub kombinacja ścieżek nie może być dwukrotnie w pełni kwalifikowana. Na przykład "c:temp c:\\windows" również zgłasza wyjątek w większości przypadków. Upewnij się, że ścieżki są dobrze sformułowane podczas używania metod, które akceptują ciąg ścieżki.

W elementach członkowskich, które akceptują ścieżkę, ścieżka może odwoływać się do pliku lub tylko katalogu. Określona ścieżka może również odwoływać się do ścieżki względnej lub ścieżki uniwersalnej konwencji nazewnictwa (UNC) dla serwera i nazwy udziału. Na przykład wszystkie następujące ścieżki są dopuszczalne:

  • "c:MyDir\\MyFile.txt" w języku C#lub "c:\\\MyDir\MyFile.txt" w Visual Basic.

  • "c:MyDir" w języku C#lub "c:\\\MyDir" w Visual Basic.

  • "MyDirMySubdir\\" w języku C# lub "MyDirMySubDir\" w Visual Basic.

  • "\\\\MyServerMyShare\\" w języku C# lub "\\MyServerMyShare\" w Visual Basic.

Ponieważ wszystkie te operacje są wykonywane na ciągach, nie można sprawdzić, czy wyniki są prawidłowe we wszystkich scenariuszach. Na przykład GetExtension metoda analizuje ciąg przekazywany do niego i zwraca rozszerzenie z tego ciągu. Nie oznacza to jednak, że na dysku istnieje plik z tym rozszerzeniem.

Aby uzyskać listę typowych zadań we/wy, zobacz Typowe zadania we/wy.

Pola

AltDirectorySeparatorChar

Udostępnia alternatywny znak specyficzny dla platformy używany do oddzielania poziomów katalogu w ciągu ścieżki, który odzwierciedla hierarchiczną organizację systemu plików.

DirectorySeparatorChar

Udostępnia znak specyficzny dla platformy używany do oddzielania poziomów katalogów w ciągu ścieżki, który odzwierciedla hierarchiczną organizację systemu plików.

InvalidPathChars
Nieaktualne.
Nieaktualne.
Nieaktualne.

Zawiera tablicę znaków specyficzną dla platformy, której nie można określić w argumentach ciągu ścieżki przekazywanych do składowych Path klasy.

PathSeparator

Znak separatora specyficznego dla platformy używany do oddzielania ciągów ścieżki w zmiennych środowiskowych.

VolumeSeparatorChar

Zawiera znak separatora woluminu specyficznego dla platformy.

Metody

ChangeExtension(String, String)

Zmienia rozszerzenie ciągu ścieżki.

Combine(String, String)

Łączy dwa ciągi w ścieżkę.

Combine(String, String, String)

Łączy trzy ciągi w ścieżkę.

Combine(String, String, String, String)

Łączy cztery ciągi w ścieżkę.

Combine(String[])

Łączy tablicę ciągów w ścieżkę.

EndsInDirectorySeparator(ReadOnlySpan<Char>)

Zwraca wartość wskazującą, czy ścieżka określona jako zakres tylko do odczytu kończy się separatorem katalogu.

EndsInDirectorySeparator(String)

Zwraca wartość wskazującą, czy określona ścieżka kończy się separatorem katalogu.

Exists(String)

Określa, czy określony plik lub katalog istnieje.

GetDirectoryName(ReadOnlySpan<Char>)

Zwraca informacje o katalogu dla określonej ścieżki reprezentowanej przez zakres znaków.

GetDirectoryName(String)

Zwraca informacje o katalogu dla określonej ścieżki.

GetExtension(ReadOnlySpan<Char>)

Zwraca rozszerzenie ścieżki pliku reprezentowanej przez zakres znaków tylko do odczytu.

GetExtension(String)

Zwraca rozszerzenie (w tym kropkę ".") określonego ciągu ścieżki.

GetFileName(ReadOnlySpan<Char>)

Zwraca nazwę pliku i rozszerzenie ścieżki pliku reprezentowanej przez zakres znaków tylko do odczytu.

GetFileName(String)

Zwraca nazwę pliku i rozszerzenie określonego ciągu ścieżki.

GetFileNameWithoutExtension(ReadOnlySpan<Char>)

Zwraca nazwę pliku bez rozszerzenia ścieżki pliku reprezentowanej przez zakres znaków tylko do odczytu.

GetFileNameWithoutExtension(String)

Zwraca nazwę pliku określonego ciągu ścieżki bez rozszerzenia.

GetFullPath(String)

Zwraca ścieżkę bezwzględną dla określonego ciągu ścieżki.

GetFullPath(String, String)

Zwraca ścieżkę bezwzględną ze ścieżki względnej i w pełni kwalifikowaną ścieżkę bazową.

GetInvalidFileNameChars()

Pobiera tablicę zawierającą znaki, które nie są dozwolone w nazwach plików.

GetInvalidPathChars()

Pobiera tablicę zawierającą znaki, które nie są dozwolone w nazwach ścieżek.

GetPathRoot(ReadOnlySpan<Char>)

Pobiera informacje o katalogu głównym ze ścieżki zawartej w określonym zakresie znaków.

GetPathRoot(String)

Pobiera informacje o katalogu głównym ze ścieżki zawartej w określonym ciągu.

GetRandomFileName()

Zwraca losową nazwę folderu lub nazwę pliku.

GetRelativePath(String, String)

Zwraca ścieżkę względną z jednej ścieżki do innej.

GetTempFileName()

Tworzy unikatowy plik tymczasowy o nazwie zero bajtów na dysku i zwraca pełną ścieżkę tego pliku.

GetTempPath()

Zwraca ścieżkę folderu tymczasowego bieżącego użytkownika.

HasExtension(ReadOnlySpan<Char>)

Określa, czy ścieżka reprezentowana przez określony zakres znaków zawiera rozszerzenie nazwy pliku.

HasExtension(String)

Określa, czy ścieżka zawiera rozszerzenie nazwy pliku.

IsPathFullyQualified(ReadOnlySpan<Char>)

Zwraca wartość wskazującą, czy ścieżka pliku reprezentowana przez określony zakres znaków jest stała dla określonego dysku lub ścieżki UNC.

IsPathFullyQualified(String)

Zwraca wartość wskazującą, czy określona ścieżka pliku jest stała dla określonego dysku, czy ścieżki UNC.

IsPathRooted(ReadOnlySpan<Char>)

Zwraca wartość wskazującą, czy określony zakres znaków reprezentujący ścieżkę pliku zawiera katalog główny.

IsPathRooted(String)

Zwraca wartość wskazującą, czy określony ciąg ścieżki zawiera katalog główny.

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Łączy dwa składniki ścieżki w jedną ścieżkę.

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Łączy trzy składniki ścieżki w jedną ścieżkę.

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Łączy cztery składniki ścieżki w jedną ścieżkę.

Join(String, String)

Łączy dwie ścieżki w jedną ścieżkę.

Join(String, String, String)

Łączy trzy ścieżki w jedną ścieżkę.

Join(String, String, String, String)

Łączy cztery ścieżki w jedną ścieżkę.

Join(String[])

Łączy tablicę ścieżek w jedną ścieżkę.

TrimEndingDirectorySeparator(ReadOnlySpan<Char>)

Przycina jeden końcowy separator katalogu poza katalogiem głównym określonej ścieżki.

TrimEndingDirectorySeparator(String)

Przycina jeden końcowy separator katalogu poza katalogiem głównym określonej ścieżki.

TryJoin(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>, Span<Char>, Int32)

Próbuje połączyć trzy składniki ścieżki z pojedynczym wstępnie przydziałem zakresu znaków i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie.

TryJoin(ReadOnlySpan<Char>, ReadOnlySpan<Char>, Span<Char>, Int32)

Próbuje połączyć dwa składniki ścieżki z pojedynczym wstępnie przydziałem zakresu znaków i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie.

Dotyczy

Zobacz też