Udostępnij za pośrednictwem


Path Klasa

Definicja

Wykonuje operacje na wystąpieniach String 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 pokazano niektóre główne elementy członkowskie klasy Path.

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 mniejszych magazynach 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 klasy Path, a także dokładne zachowanie niektórych elementów członkowskich klasy Path 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.

.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 systemie Windows, zobacz Formaty ścieżek plików w systemach Windows.

Większość elementów członkowskich klasy Path nie wchodzi w interakcję z systemem plików i nie weryfikuje istnienia pliku określonego przez ciąg ścieżki. Path składowych klasy, które modyfikują ciąg ścieżki, taki jak ChangeExtension, nie mają wpływu na nazwy plików w systemie plików.

Niektóre Path składowe weryfikują zawartość określonego ciągu ścieżki i zgłaszają ArgumentException, jeśli ciąg zawiera znaki, które nie są prawidłowe w ciągach ścieżki, zgodnie z definicją w znakach zwracanych z metody GetInvalidPathChars. Na przykład na platformach klasycznych opartych na systemie Windows nieprawidłowe znaki ścieżki mogą zawierać cudzysłów ("), mniejsze niż (<>), potok (|), backspace (\b), znaki null (\0) oraz znaki Unicode od 16 do 18 i 20 do 25. To zachowanie sprawdzania poprawności różni się między wersjami platformy .NET:

  • W programach .NET Framework i .NET Core starszych niż 2.1: wszystkie elementy członkowskie Path, które przyjmują ścieżkę jako argument, zgłaszają ArgumentException, jeśli wykrywają 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, jeśli ciąg zawiera nieprawidłowe znaki ścieżki.

Elementy członkowskie klasy Path 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 klasy Path są statyczne i dlatego mogą być wywoływane bez wystąpienia ścieżki.

Nuta

W elementach członkowskich, które akceptują ścieżkę jako ciąg wejściowy, ta ścieżka musi być poprawnie 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ć w pełni kwalifikowana dwa razy. 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ą prawidłowo 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.

  • "MyDir\\MySubdir" w języku C# lub "MyDir\MySubDir" w Visual Basic.

  • "\\\MyServer\\MyShare" w języku C#lub "\MyServer\MyShare" 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 metoda GetExtension analizuje ciąg przekazywany do niego i zwraca rozszerzenie z tego ciągu. Nie oznacza to jednak, że plik z tym rozszerzeniem istnieje na dysku.

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 katalogu w ciągu ścieżki, który odzwierciedla hierarchiczną organizację systemu plików.

InvalidPathChars
Przestarzałe.
Przestarzałe.

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

PathSeparator

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

VolumeSeparatorChar

Udostępnia znak separatora woluminu specyficznego dla platformy.

Metody

ChangeExtension(String, String)

Zmienia rozszerzenie ciągu ścieżki.

Combine(ReadOnlySpan<String>)

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

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ę podstawową.

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(ReadOnlySpan<String>)

Łączy zakres ścieżek 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 separator katalogu końcowego poza katalogiem głównym określonej ścieżki.

TrimEndingDirectorySeparator(String)

Przycina jeden separator katalogu końcowego 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 przydzielonym zakresem 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ż