現在の実行環境におけるディレクトリ区切り文字を知りたい場合はDirectorySeparatorCharフィールドを参照します。 Pathクラスでは自動的に適切なディレクトリ区切り文字が使用されます。 例えば、Windows上では\
、非Windows環境では/
がディレクトリ区切り文字となります。
AltDirectorySeparatorCharフィールドからは、代替となるディレクトリ区切り文字を取得できます。 Windows上では、\
だけでなく/
をディレクトリ区切り文字として用いたパスもサポートされていて、この文字が代替ディレクトリ区切り文字として定義されています。 逆に、非Windows環境では/
のみがサポートされます。
なお、代替文字/
を含むパスをPathクラスで処理した場合、ディレクトリ区切り文字が\
に置き換えられる場合があります。
Path.DirectorySeparatorChar/AltDirectorySeparatorCharフィールドを参照して現在の環境でのディレクトリ区切り文字を取得する
using System;
using System.IO;
class Sample {
static void Main()
{
// ディレクトリ区切り文字を取得
Console.WriteLine($"{nameof(Path.DirectorySeparatorChar)} = {Path.DirectorySeparatorChar}");
// ディレクトリ区切り文字の代替文字を取得
Console.WriteLine($"{nameof(Path.AltDirectorySeparatorChar)} = {Path.AltDirectorySeparatorChar}");
Console.WriteLine();
// ディレクトリ名とファイル名の結合 (上記のディレクトリ区切り文字が用いられる)
Console.WriteLine(Path.Combine("dir", "file.txt"));
Console.WriteLine();
// ディレクトリ名とファイル名の抽出 (上記のディレクトリ区切り文字・代替文字に基づいて抽出される)
var path1 = @"dir\subdir\file.txt";
var path2 = "dir/subdir/file.txt";
Console.WriteLine("<{0}> <{1}>", Path.GetDirectoryName(path1), Path.GetFileName(path1));
Console.WriteLine("<{0}> <{1}>", Path.GetDirectoryName(path2), Path.GetFileName(path2));
}
}
実行結果
DirectorySeparatorChar = \ AltDirectorySeparatorChar = / dir\file.txt <dir\subdir> <file.txt> <dir\subdir> <file.txt>
実行結果
DirectorySeparatorChar = / AltDirectorySeparatorChar = / dir/file.txt <> <dir\subdir\file.txt> <dir/subdir> <file.txt>
Path.DirectorySeparatorCharフィールドの値を見ることで現在の実行環境をある程度判別することもできますが、より厳密に判別する方法は別途用意されています。 詳しくはランタイム・システム・プラットフォームの情報 §.OSバージョンを参照してください。