C#サニタイズファイル名
最近、たくさんのMP3をさまざまな場所からリポジトリに移動しています。ID3タグを使用して新しいファイル名を作成していました(おかげで、TagLib-Sharp!)System.NotSupportedException。 「指定されたパスの形式はサポートされていません。」 これはFile.Copy()またはによって生成されましたDirectory.CreateDirectory()。 私のファイル名をサニタイズする必要があることを理解するのに長い時間はかかりませんでした。だから私は明白なことをしました: public static string SanitizePath_(string path, char replaceChar) { string dir = Path.GetDirectoryName(path); foreach (char c in Path.GetInvalidPathChars()) dir = dir.Replace(c, replaceChar); string name = Path.GetFileName(path); foreach (char c in Path.GetInvalidFileNameChars()) name = name.Replace(c, replaceChar); return dir + name; } 驚いたことに、私は例外を受け続けました。「:」はPath.GetInvalidPathChars()パスのルートで有効であるため、のセットには含まれていないことが判明しました。それは理にかなっていると思いますが、これはかなり一般的な問題でなければなりません。パスをサニタイズする短いコードを誰かが持っていますか?私はこれを最も徹底的に考え出しましたが、おそらくやり過ぎだと感じています。 // replaces invalid characters with replaceChar …