はじめに
このプロジェクトでは、Java を使ってディレクトリ内のテキストファイルを検索する方法を学びます。このプロジェクトでは、ユーザーから入力パスを取得し、入力を検証し、ディレクトリ内のすべてのテキストファイルを見つけ、それらの名前を表示するプロセスを案内します。
👀 プレビュー
読み取りパスを入力してください:/home/labex/project/files
見つかったテキストファイル:
file1.txt
file3.txt
file6.txt
🎯 タスク
このプロジェクトでは、以下を学びます。
Scannerクラスを使ってディレクトリパスのユーザー入力を取得する方法Fileクラスを使って入力パスを検証する方法- テキストファイルをフィルタリングするためのカスタム
FilenameFilterを作成する方法 listFiles()メソッドを使ってディレクトリ内のすべてのテキストファイルを見つける方法- 見つかったテキストファイルを反復処理してそれらの名前を表示する方法
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
Scannerクラスを使ってディレクトリパスのユーザー入力を取得するFileクラスを使って入力パスを検証する- テキストファイルをフィルタリングするためのカスタム
FilenameFilterを実装する listFiles()メソッドを使ってディレクトリ内のすべてのテキストファイルを取得する- 見つかったテキストファイルを反復処理してそれらの名前を表示する
入力パスを取得する
このステップでは、Scannerクラスを使ってユーザーから指定されたパスを取得する方法を学びます。
- コードエディタで
SelectTxtFile.javaファイルを開きます。 mainメソッド内で、ユーザー入力を読み取るための新しいScannerオブジェクトを作成します。
Scanner scanner = new Scanner(System.in);
- 読み取りパスを求めるプロンプトメッセージをユーザーに表示します。
System.out.print("Please enter the read path:");
nextLine()メソッドを使ってユーザーの入力を読み取り、path変数に格納します。
String path = scanner.nextLine();
- 入力を読み取った後、
Scannerを閉じてリソースを解放します。
scanner.close();
入力パスを検証する
このステップでは、入力パスが有効なディレクトリであるかどうかを確認するためにFileクラスをどのように使用するかを学びます。
- ユーザーが提供した
pathで新しいFileオブジェクトを作成します。
File directory = new File(path);
exists()メソッドを使用してディレクトリが存在するかどうかを確認します。
if (!directory.exists() ||!directory.isDirectory()) {
- ディレクトリが存在しないか、ディレクトリでない場合は、エラーメッセージを表示してプログラムを終了します。
System.out.println("The directory does not exist, or it is not a directory");
return;
}
ディレクトリ内のテキストファイルを見つける
このステップでは、FilenameFilterを使用してディレクトリ内のすべてのテキストファイルを検索する方法を学びます。
FilenameFilterインターフェイスを実装する新しいTxtFileFilterクラスを作成します。
static class TxtFileFilter implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".txt");
}
}
FileクラスのlistFiles()メソッドを使用して、ディレクトリ内のファイルの配列を取得し、TxtFileFilterを使用してそれらをフィルタリングします。
File[] files = directory.listFiles(new TxtFileFilter());
見つかったテキストファイルを表示する
この最後のステップでは、見つかったテキストファイルを反復処理してそれらの名前を表示する方法を学びます。
- テキストファイルが見つかったことを示すヘッダーを表示します。
System.out.println("Found text files:");
for-eachループを使用してfiles配列を反復処理し、各ファイルの名前を表示します。
for (File file : files) {
System.out.println(file.getName());
}
これで完了です!これで、ディレクトリ内のテキストファイルを検索するプロジェクトが完了しました。SelectTxtFileクラスを実行することで、プログラムをテストできます。
ファイル検索用の Java プログラムを検証する
このステップでは、ファイル検索用の Java プログラムを検証します。
- ターミナルを開き、
javacコマンドを使用して Java ファイルをコンパイルします。
javac SelectTxtFile.java
- Java ファイルのコンパイルが成功した後、
javaコマンドを使用してコンパイル済みのプログラムを実行します。
java SelectTxtFile
- Java プログラムを実行すると、読み取りパスの入力を求められます。テキストファイルが格納されているディレクトリパスを入力し、Enter キーを押します。
- ディレクトリが存在しないか、ディレクトリでない場合は、問題を示すメッセージが表示されます。
- ディレクトリが有効で、テキストファイルが含まれている場合、プログラムはそのディレクトリに見つかったテキストファイルの名前を表示します。
以下は期待される出力の例です。
Please enter the read path:/home/labex/project/files
Found text files:
file1.txt
file3.txt
file6.txt
これらの手順に従うことで、テキストファイルを選択する Java プログラムの機能を検証できます。
まとめ
おめでとうございます!このプロジェクトを完了しました。実力を向上させるために、LabEx でさらに多くの実験を行って練習してください。



