1. ホーム
  2. c#

[解決済み] C#/.NETでパスとファイル名を結合する最も良い方法は何ですか?

2023-06-21 14:03:20

質問

パスとファイル名を結合する最も良い方法は何ですか?

つまり、与えられた c:\foobar.txt が欲しい。 c:\foo\bar.txt .

与えられた c:\foo..\bar.txt のどちらかが必要で、エラーか c:\foo\bar.txt のいずれかが必要です (そのため Path.Combine() を直接使うことはできません)。同様に c:\foobar/baz.txt が必要な場合、エラーまたは c:\foo\baz.txt (ただし c:\foo\bar\baz.txt ).

ファイル名に'˶'や'/'が含まれていないことを確認すればよいのですが、それだけでよいのでしょうか?そうでない場合、どのようなチェックが正しいのでしょうか?

どのように解決するのですか?

不適切なファイル名でエラーを発生させたい場合。

if (Path.GetFileName(fileName) != fileName)
{
    throw new Exception("'fileName' is invalid!");
}
string combined = Path.Combine(dir, fileName);

あるいは、例外を投げずに黙って "悪い" のファイル名を修正したい場合。

string combined = Path.Combine(dir, Path.GetFileName(fileName));