C# dotnet ディレクトリ Path区切り文字¥かスラッシュかを判断

DirectorySeparatorChar

C# .NET 6 ( dotnet )で、 macOSWindows両方対応したコードを書く場合

ディレクトリのPath名が、 「¥」なのか「/」なのかを判断するための

静的フィールドが用意されています。

using System.IO;

char separator = Path.DirectorySeparatorChar;
Console.WriteLine("{0}", separator);

上記↑のコードを macOSで実行すると 結果は「/」です

macOSで実行すると 結果は「/」

Windowsでは「¥」が返ります。

その他のセパレーター

char altDirSeparator = Path.AltDirectorySeparatorChar;
Console.WriteLine("{0}", altDirSeparator);
char pathSeparator = Path.PathSeparator;
Console.WriteLine("{0}", pathSeparator);
char volumeSeparator = Path.VolumeSeparatorChar;
Console.WriteLine("{0}", volumeSeparator);

C# dotnet ファイル名・パス名で使用できない文字を検出

GetInvalidFileNameChars結果

C# .NET 6 でファイル名を指定する場合、ファイル名・パス名で使用できない文字を

検出できるメソッドが用意されています。

ファイル名の使用できない文字を検出

コード例

using System.IO;

string fileName = "フ\0ァイ/ル名1";

foreach(char invalidChar in Path.GetInvalidFileNameChars()){
    if (fileName.Contains(invalidChar) ){   // ファイル名として利用できない場合 true
        Console.WriteLine("利用できない文字 = {0:c}(0x{1:X4})", invalidChar, (int)invalidChar);
    }
}
結果 (macOSの場合)

GetInvalidFileNameChars()を実行した場合、macOSでは [0x00,0x2F]が返る

パス名の使用できない文字を検出

コード例

using System.IO;

string pathName = "フ\0ァイ/ル名1";

foreach(char invalidChar in Path.GetInvalidPathChars()){
    if (pathName.Contains(invalidChar) ){   // ファイル名として利用できない場合 true
        Console.WriteLine("利用できない文字 = {0:c}(0x{1:X4})", invalidChar, (int)invalidChar);
    }
}

GetInvalidPathChars()は、 macOSの場合 [0x00]が返る

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED