4

重複の可能性:
Java で、ファイルを作成せずにパスが有効かどうかを判断する方法はありますか?

文字列がフォルダーまたはファイルの有効なパス名であるかどうかを確認したい。有効なパス名は C:\Games\WarCraft のようになり、無効なパスは c:[][]Games\\WarCraft になります。これが正しいかどうかを確認するにはどうすればよいですか?

そのファイルまたはフォルダーが存在するかどうかを確認することに興味はありません。Apache Commons のような外部ライブラリを使用したくありません。ただの古い Java です。

また、コードシステムを独立させたい - UPDATEは必要ありませんが

手がかりをください!:)

4

1 に答える 1

2

システムに依存しない方法でこれを行うことはできません。また、パス名検証用の標準 API はないと思います。

私が考えることができる最善の提案は、正規表現を使用してパス名を一致させることです。正確な詳細は、パス名をどの程度緩くまたは厳密に制約するかによって異なります。たとえば、Linux ではパス名にスペースを使用できないようにしたい場合があります。スペースは有効ですが、不適切に作成されたシェル スクリプトでも問題が発生するためです。または、絶対 (または相対) パス名を主張したい場合もあります。

ただし、正規表現の照合を行う前に、. を使用してパス名を正規化することをお勧めしFile.getCanonicalFile()ます。これにより、シンボリック リンクのチェック、冗長な「.」の削除などが行われます。と「..」を入力し、ドライブ文字を標準形式に変換します...これにより、正規表現が簡素化されます。

于 2012-12-18T01:11:52.947 に答える