1. ホーム
  2. c#

[解決済み] 文字列がWindowsの有効なディレクトリ(フォルダ)パスであるかどうかをチェックします。

2023-04-01 01:55:33

質問

ユーザーによって入力された文字列が、フォルダーへのパスを表すのに有効かどうかを判断しようとしています。有効であるということは、適切にフォーマットされているということです。

私のアプリケーションでは、フォルダーはインストール先を表します。ただし、フォルダーのパスが が有効であることを前提に、私はそのフォルダーが存在するかどうかを判断し、存在しない場合は作成したいのです。

現在、私は IO.Directory.Exists( String path ) . これは、ユーザーが文字列を適切にフォーマットしない場合を除き、うまく機能することがわかります。このような場合、このメソッドは false を返し、そのフォルダが存在しないことを示します。しかし、これはその後フォルダを作成することができないので問題です。

ググってみると、正規表現を使用してフォーマットが適切かどうかをチェックするという提案を見つけました。私は正規表現の経験がなく、それが実行可能なアプローチであるかどうか疑問に思っています。以下は、私が見つけたものです。

Regex r = new Regex( @"^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^/:*?<>""|]*))+)$" );
return r.IsMatch( path );

と組み合わせて正規表現でテストすると Directory.Exists() を与えてください。 好い加減 メソッドを使って、パスが有効かどうか、存在するかどうかをチェックすることができます。OSなどでも変わってくると思いますが、プログラムの対象は ウィンドウズ のユーザーのみ。

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

コール Path.GetFullPath パスが無効な場合は例外を発生させます。

相対パスを許可しない場合(例えば Word ) を呼び出す。 Path.IsPathRooted .