Path Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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. |