0

ファイル名が含まれている場合と含まれていない場合があるパスからディレクトリを抽出しようとしています。問題は、すでにディレクトリになっているパスのディレクトリ名を取得しようとすると、Path.GetDirectoryName()がそのディレクトリの上位レベルを返すことです。パスはデータベースからロードされるため、ファイル属性を確認できません。

元。 Path.GetDirectoryName( "D:\ Work \ Project \ Sources \ trunk \ Project2 \ bin \ Debug")は "D:\ Work \ Project \ Sources \ trunk \ Project2 \bin\"を返します

パスに「。」が含まれているかどうかをチェックする単純なアルゴリズムを考えていました。キャラクター; はいの場合、ファイル名を含むパスを処理しています。残念ながら、ディレクトリ名には「。」を含めることもできます。キャラクター。

この問題の完璧な解決策はないことを私は知っていますが、次善の策は何ですか?

この問題についてはすでにStackoverflowの質問がありますが、ファイルまたはディレクトリがすでに存在していることを前提としています。

4

2 に答える 2

3

ディレクトリまたはファイルが存在しない場合、それがファイルなのかディレクトリなのかを知る方法はありません。

あなたの例では、ディレクトリに(拡張子なしで)D:\Work\Project\Sources\trunk\Project2\bin\Debugという名前のファイルがある可能性があります。Debugbin

別の例: 、 ...のサブディレクトリであるD:\Work\Project\Sources\trunk\Project2\bin\Debug\file.exeという名前のディレクトリが存在する可能性があります。file.exeDebug

于 2012-07-18T11:46:53.010 に答える
1

あなたのシナリオで、あなたのケースが本当に「file.ext」フォーマットのみを含む場合、次の正規表現はあなたが必要とするものに答えます

^(.*/)([^/]*)$
于 2012-07-18T11:52:53.727 に答える