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]が返る

MacBook CPUファンが唸る原因の1つ mds_stores対策で少しだけ改善

MacBook CPUファンが唸る原因の1つ mds_stores対策で少しだけ改善

最近、 MacBookの CPUファンが 頻繁に唸るので アクティビティモニタで確認すると

下↓のように mds_storesという実行ファイルがCPUを占領していた。

アクティビティモニタ mds_stores

この mds_storesは、 Spotlightなどのインデックスを作る metadata serverということらしい

Spotlightのインデックス作成の量を減らせば少し改善されるはず

[システム環境設定]を開き↓

メニューの[システム環境設定]

[Spotlight]設定を開きます。↓

Spotlight設定

[Spotlight]設定画面内の [検索結果]タブのチェックを外していきます。

私の、 チェックは下↓の程度です。

Spotlightの検索結果チェックを外した

私の場合、 アプリ起動はSpotlightを使っているので それ以外はチェックを外しました。

この設定変更だけで、 mds_storesのCPU専有している率は多少下がりました