今回は、文字列の分解について考えてみましょう。例えば、ファイルのパスがあっているかどうか を確認してみましょう。例えば、D:\javafile\test\test.txtというファイルがあったとしましょう。 (これはWindowsベースです。しかもフルパスです)これが本当にあるかどうかを調べる場合 どうしますか?プログラムのディレクトリがD:のどこかにあるとします。
こういう時は、D:の中の…javafileディレクトリの中の…と調べないといけませんよね。 (そのままFileクラスでオブジェクトを作るなんて事は考えないでください) だとすると、邪魔なものは"\"ですね。"\"で区切れればディレクトリの存在を調べることが できます。ディレクトリを作る時は、
File file = new File("D:");
とすると、Dドライブの直下のディレクトリが調べられますね。しかし、実際にある文字列は D:\javafile\test\test.htmlです。このような時にStringTokenizerクラスが役に立ちます。 次のようにすると…。
String f_list[];
String next_directory;
String path = "D:\javafile\test\test.txt";
StringTokenizer st = new StringTokenizer(path,"\\");//\マークはエスケープシーケンスです
File file = new File(st.nextToken());//初めの単語名のファイルオブジェクトを生成
if(file.isDirectory()){
f_list = file.list();
for(int i = 0; i < f_list.length;i++){
next_directory = st.nextToken();
if(f_list[i].equals(next_directory)){
System.out.println("ありました");
}
}
}
else{
System.out.println("ディレクトリじゃないです");
}
とすると、次のjavafileディレクトリが見つけられるはずです。これを繰り返して目的のファイルを 探します。と言ったように、他のことでもこの方法を使えば何かを探すということもできます。 例えば、テキストエディタの「検索」機能とか…。また、"\"でなくても、スペースとか","とか 何でも単語に分割する時の目印にできます。