2016-09-02 4 views
0

の比較:文字列として与えられた二つのファイルパスを検討する2つのファイルパスの関係

/path/to/dir/path/to/dir/file

Javaでは、どのように1つのテストすることができ、それ以降のファイルパスは、ディスク上の実際のファイルを表すならば、これは最初の文字列で表されるディレクトリ以下です。 File方法.getCanonicalPathにより

/path/to/dir /path/to/dir   (true)  
/path/to/dir /path/to/dir/file  (true) 
/path/to/dir /path     (false) 
/path/to/dir /path/to/dir/../../file (false) 
/path/to/dir file     (false) 
/path/to/dir /path/to/dir/dir2/../ (true) 

は1がドットを取り除くだろうし、その後、文字列レベルで確認してください。ここでは、ここで疑問視されたチェック機能のいくつかのサンプルの戻り値を含め、この点を明確にするため、いくつかのより多くの例であります?たぶん良い方法があります。私は見つけられませんでした、何がFile.compareToは正確に行います。正規のパスをお持ちの場合は

+0

'ファイルの方法.getCanonicalPathでドットを排除して、文字列level'にチェックを受けるなど、パスの区切りの誤った取り扱いによる誤差を導入することができますあなた自身の質問に答える方法。私はそれが動作するかどうかを確認するために実装することを提案問題がある場合はいつでもコードについて尋ねることができます。 – Linus

答えて

0

、あなたがこれを行うことができます:

String path1 = "/path/to/dir" 
String path2 = "/path/to/dir/file" 

path2.beginsWith(path1); 

本のこの結果は、あなたの答えになります

1

ネイティブパス操作を使用してください。文字列操作は、あなたが持っているようですね...

Path path1 = Paths.get("/home").normalize(); 
Path path2 = Paths.get("/home/user/filename").normalize(); 

path2.startsWith(path1); 
関連する問題