3

ファイル パスが無効な場合、サード パーティのライブラリでエラーが発生します。File.Exists()ファイルパスに無効な文字が含まれている場合は false を返すと考えてこのケースを処理しようとしましたが、 true を返します

これは奇妙です (余分なスペースとピリオドを参照してください)。

    string wrong = "myfolder1\\myfolder2\\myfile.txt      .";
    bool x = File.Exists(wrong);

ファイルパスをクリーンアップする方法はありますか?

new FileInfo(wrong).Nameクリーンアップしません。

私たちの主な目的は、サードパーティのライブラリに送信する前に、ファイル パスが有効かどうかを確実に判断することです。File.Exists() がこれを行うべきだと思うので、この質問をするのはほとんどばかげていると感じます。

(私たちは .NET 4.0 を使用しています)

4

1 に答える 1

7

Windows API は、ファイル名の末尾のピリオドとスペースを削除します。

詳細については、この msdn の記事を参照してください。

ファイル名またはディレクトリ名をスペースまたはピリオドで終わらせないでください。基盤となるファイル システムはこのような名前をサポートしている場合がありますが、Windows シェルとユーザー インターフェイスはサポートしていません。ただし、名前の最初の文字としてピリオドを指定することは許容されます。たとえば、「.temp」。


それが機能するかどうかはわかりませんが、プレフィックスを使用してシェルをバイパスできる場合があります。それが機能するかどうかを試してみてください(通知されない場合は、現時点ではテストできません。このセクションを削除します。)\\?\File.Exists(@"\\?\C:\myfolder1\myfolder2\myfile.txt .");

于 2013-06-25T14:47:44.517 に答える