Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Path.DirectorySeparatorChar Field

Definition

Namespace:
System.IO
Assemblies:
mscorlib.dll, System.Runtime.Extensions.dll
Assemblies:
netstandard.dll, System.Runtime.dll
Assembly:
System.Runtime.Extensions.dll
Assembly:
mscorlib.dll
Assembly:
netstandard.dll
Source:
Path.cs
Source:
Path.cs
Source:
Path.cs
Source:
Path.cs
Source:
Path.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Provides a platform-specific character used to separate directory levels in a path string that reflects a hierarchical file system organization.

public: static initonly char DirectorySeparatorChar;
public static readonly char DirectorySeparatorChar;
 staticval mutable DirectorySeparatorChar : char
Public Shared ReadOnly DirectorySeparatorChar As Char 

Field Value

Examples

The following example displays Path field values on Windows and on Unix-based systems. Note that Windows supports either the forward slash (which is returned by the AltDirectorySeparatorChar field) or the backslash (which is returned by the DirectorySeparatorChar field) as path separator characters, while Unix-based systems support only the forward slash.

using System;
using System.IO;

class Program
{
 static void Main()
 {
 Console.WriteLine($"Path.DirectorySeparatorChar: '{Path.DirectorySeparatorChar}'");
 Console.WriteLine($"Path.AltDirectorySeparatorChar: '{Path.AltDirectorySeparatorChar}'");
 Console.WriteLine($"Path.PathSeparator: '{Path.PathSeparator}'");
 Console.WriteLine($"Path.VolumeSeparatorChar: '{Path.VolumeSeparatorChar}'");
 var invalidChars = Path.GetInvalidPathChars();
 Console.WriteLine($"Path.GetInvalidPathChars:");
 for (int ctr = 0; ctr < invalidChars.Length; ctr++) 
 {
 Console.Write($" U+{Convert.ToUInt16(invalidChars[ctr]):X4} ");
 if ((ctr + 1) % 10 == 0) Console.WriteLine();
 }
 Console.WriteLine();
 }
}
// The example displays the following output when run on a Windows system:
// Path.DirectorySeparatorChar: '\'
// Path.AltDirectorySeparatorChar: '/'
// Path.PathSeparator: ';'
// Path.VolumeSeparatorChar: ':'
// Path.GetInvalidPathChars:
// U+007C) U+0000) U+0001) U+0002) U+0003) U+0004) U+0005) U+0006) U+0007) U+0008)
// U+0009) U+000A) U+000B) U+000C) U+000D) U+000E) U+000F) U+0010) U+0011) U+0012)
// U+0013) U+0014) U+0015) U+0016) U+0017) U+0018) U+0019) U+001A) U+001B) U+001C)
// U+001D) U+001E) U+001F)
//
// The example displays the following output when run on a Linux system:
// Path.DirectorySeparatorChar: '/'
// Path.AltDirectorySeparatorChar: '/'
// Path.PathSeparator: ':'
// Path.VolumeSeparatorChar: '/'
// Path.GetInvalidPathChars:
// U+0000
Imports System.IO

Module Program
 Sub Main()
 Console.WriteLine($"Path.DirectorySeparatorChar: '{Path.DirectorySeparatorChar}'")
 Console.WriteLine($"Path.AltDirectorySeparatorChar: '{Path.AltDirectorySeparatorChar}'")
 Console.WriteLine($"Path.PathSeparator: '{Path.PathSeparator}'")
 Console.WriteLine($"Path.VolumeSeparatorChar: '{Path.VolumeSeparatorChar}'")
 Dim invalidChars = Path.GetInvalidPathChars()
 Console.WriteLine($"Path.GetInvalidPathChars:")
 For ctr As Integer = 0 To invalidChars.Length - 1 
 Console.Write($" U+{Convert.ToUInt16(invalidChars(ctr)):X4} ")
 if (ctr + 1) Mod 10 = 0 Then Console.WriteLine()
 Next
 Console.WriteLine()
 Console.WriteLine("Hello World!")
 End Sub
End Module
' The example displays the following output when run on a Windows system:
' Path.DirectorySeparatorChar: '\'
' Path.AltDirectorySeparatorChar: '/'
' Path.PathSeparator: ';'
' Path.VolumeSeparatorChar: ':'
' Path.GetInvalidPathChars:
' U+007C) U+0000) U+0001) U+0002) U+0003) U+0004) U+0005) U+0006) U+0007) U+0008)
' U+0009) U+000A) U+000B) U+000C) U+000D) U+000E) U+000F) U+0010) U+0011) U+0012)
' U+0013) U+0014) U+0015) U+0016) U+0017) U+0018) U+0019) U+001A) U+001B) U+001C)
' U+001D) U+001E) U+001F)
'
' The example displays the following output when run on a Linux system:
' Path.DirectorySeparatorChar: '/'
' Path.AltDirectorySeparatorChar: '/'
' Path.PathSeparator: ':'
' Path.VolumeSeparatorChar: '/'
' Path.GetInvalidPathChars:
' U+0000

Remarks

AltDirectorySeparatorChar and DirectorySeparatorChar are both valid for separating directory levels in a path string.

When you are using .NET Core to develop applications that run on multiple platforms:

  • If you prefer to hard-code the directory separator character, you should use the forward slash (/) character. It is the only recognized directory separator character on Unix systems, as the output from the example shows, and is the AltDirectorySeparatorChar on Windows.

  • Use string concatenation to dynamically retrieve the path separator character at runtime and incorporate it into file system paths. For example,

    separator = Path.DirectorySeparatorChar;
    path = $"{separator}users{separator}user1{separator}";
    
    separator = Path.DirectorySeparatorChar
    path = $"{separator}users{separator}user1{separator}"
    

    You can also retrieve the value from the AltDirectorySeparatorChar property, since it is the same on both Windows and Unix-based systems.

  • Retrieve the AltDirectorySeparatorChar property

If your application is not cross-platform, you can use the separator appropriate for your system.

Applies to

See also


Feedback

Was this page helpful?