0

同じパスの異なる表現に対してまったくPath.GetFullPath()同じ結果を返さないアプリケーションのバグを見つけました。この場合、とはそれぞれ&を返します。私はfordir名を維持しているので、これは物事を壊します。../include../include/c:\\...\\includec:\\...\\include\\Dictionary<string,...>

これをどのように修正できますか?理想的には、文字列をぎこちなくチェックせずに、フレームワークメソッドを使用しますか?

4

3 に答える 3

4

../includeディレクトリまたはファイルを指している可能性があり(ファイルに拡張子を付ける必要はありません)、../include/末尾のスラッシュのために常にディレクトリです。したがって、それらは間違いなく同じではありません。

入力が常にディレクトリであると確信している場合(確信Path.GetFullPath()持てません)、次のことができます。

path = Path.Combine(input, Path.DirectorySeparatorChar.ToString());

このようにして、すべての入力はファイルではなくディレクトリとして認識されPath.GetFullPath()、両方のバリアントに対して同じものを返します。

于 2013-02-20T13:34:10.880 に答える
0

もっともらしい場合は、.TrimEnd('\')を実行します。

于 2013-02-20T13:29:07.610 に答える
0

同じ結果を返すべきではありません。パスが実際にファイルまたはディレクトリであるかどうかを確認する必要がある場合はPath.GetFullPath("../include")、末尾のスラッシュなしで使用できます。パスがプログラムで提供されている場合は、次を実行して string.TrimEnd('\\')、次を使用してパスがファイルまたはディレクトリであるかどうかを確認します。

File.Exists()およびDirectory.Exists()を使用して、指定されたパスがファイルかディレクトリかを判断します。

すべてのテーブルの挿入と検索が、末尾のないスラッシュ パスを挿入/比較することによって行われることを確認する必要があります。

于 2013-02-20T13:24:29.293 に答える