ディレクトリ内のテキストファイルを検索する

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、Javaを使ってディレクトリ内のテキストファイルを検索する方法を学びます。このプロジェクトでは、ユーザーから入力パスを取得し、入力を検証し、ディレクトリ内のすべてのテキストファイルを見つけ、それらの名前を表示するプロセスを案内します。

👀 プレビュー

読み取りパスを入力してください:/home/labex/project/files
見つかったテキストファイル:
file1.txt
file3.txt
file6.txt

🎯 タスク

このプロジェクトでは、以下を学びます。

  • Scannerクラスを使ってディレクトリパスのユーザー入力を取得する方法
  • Fileクラスを使って入力パスを検証する方法
  • テキストファイルをフィルタリングするためのカスタムFilenameFilterを作成する方法
  • listFiles()メソッドを使ってディレクトリ内のすべてのテキストファイルを見つける方法
  • 見つかったテキストファイルを反復処理してそれらの名前を表示する方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • Scannerクラスを使ってディレクトリパスのユーザー入力を取得する
  • Fileクラスを使って入力パスを検証する
  • テキストファイルをフィルタリングするためのカスタムFilenameFilterを実装する
  • listFiles()メソッドを使ってディレクトリ内のすべてのテキストファイルを取得する
  • 見つかったテキストファイルを反復処理してそれらの名前を表示する

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/BasicSyntaxGroup -.-> java/output("Output") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/interface("Interface") java/FileandIOManagementGroup -.-> java/files("Files") java/FileandIOManagementGroup -.-> java/read_files("Read Files") java/FileandIOManagementGroup -.-> java/io("IO") subgraph Lab Skills java/if_else -.-> lab-300396{{"ディレクトリ内のテキストファイルを検索する"}} java/for_loop -.-> lab-300396{{"ディレクトリ内のテキストファイルを検索する"}} java/output -.-> lab-300396{{"ディレクトリ内のテキストファイルを検索する"}} java/user_input -.-> lab-300396{{"ディレクトリ内のテキストファイルを検索する"}} java/interface -.-> lab-300396{{"ディレクトリ内のテキストファイルを検索する"}} java/files -.-> lab-300396{{"ディレクトリ内のテキストファイルを検索する"}} java/read_files -.-> lab-300396{{"ディレクトリ内のテキストファイルを検索する"}} java/io -.-> lab-300396{{"ディレクトリ内のテキストファイルを検索する"}} end

入力パスを取得する

このステップでは、Scannerクラスを使ってユーザーから指定されたパスを取得する方法を学びます。

  1. コードエディタでSelectTxtFile.javaファイルを開きます。
  2. mainメソッド内で、ユーザー入力を読み取るための新しいScannerオブジェクトを作成します。
Scanner scanner = new Scanner(System.in);
  1. 読み取りパスを求めるプロンプトメッセージをユーザーに表示します。
System.out.print("Please enter the read path:");
  1. nextLine()メソッドを使ってユーザーの入力を読み取り、path変数に格納します。
String path = scanner.nextLine();
  1. 入力を読み取った後、Scannerを閉じてリソースを解放します。
scanner.close();
✨ 解答を確認して練習

入力パスを検証する

このステップでは、入力パスが有効なディレクトリであるかどうかを確認するためにFileクラスをどのように使用するかを学びます。

  1. ユーザーが提供したpathで新しいFileオブジェクトを作成します。
File directory = new File(path);
  1. exists()メソッドを使用してディレクトリが存在するかどうかを確認します。
if (!directory.exists() ||!directory.isDirectory()) {
  1. ディレクトリが存在しないか、ディレクトリでない場合は、エラーメッセージを表示してプログラムを終了します。
    System.out.println("The directory does not exist, or it is not a directory");
    return;
}
✨ 解答を確認して練習

ディレクトリ内のテキストファイルを検索する

このステップでは、FilenameFilterを使用してディレクトリ内のすべてのテキストファイルを検索する方法を学びます。

  1. FilenameFilterインターフェイスを実装する新しいTxtFileFilterクラスを作成します。
static class TxtFileFilter implements FilenameFilter {
    @Override
    public boolean accept(File dir, String name) {
        return name.toLowerCase().endsWith(".txt");
    }
}
  1. FileクラスのlistFiles()メソッドを使用して、ディレクトリ内のファイルの配列を取得し、TxtFileFilterを使用してそれらをフィルタリングします。
File[] files = directory.listFiles(new TxtFileFilter());
✨ 解答を確認して練習

見つかったテキストファイルを表示する

この最後のステップでは、見つかったテキストファイルを反復処理してそれらの名前を表示する方法を学びます。

  1. テキストファイルが見つかったことを示すヘッダーを表示します。
System.out.println("Found text files:");
  1. for-eachループを使用してfiles配列を反復処理し、各ファイルの名前を表示します。
for (File file : files) {
    System.out.println(file.getName());
}

これで完了です! これで、ディレクトリ内のテキストファイルを検索するプロジェクトが完了しました。SelectTxtFileクラスを実行することで、プログラムをテストできます。

✨ 解答を確認して練習

ファイル検索用のJavaプログラムの検証

このステップでは、ファイル検索用のJavaプログラムを検証します。

  1. ターミナルを開き、javacコマンドを使用してJavaファイルをコンパイルします。
javac SelectTxtFile.java
  1. Javaファイルのコンパイルが成功した後、javaコマンドを使用してコンパイル済みのプログラムを実行します。
java SelectTxtFile
  1. Javaプログラムを実行すると、読み取りパスの入力を求められます。テキストファイルが格納されているディレクトリパスを入力し、Enterキーを押します。
  • ディレクトリが存在しないか、ディレクトリでない場合は、問題を示すメッセージが表示されます。
  • ディレクトリが有効で、テキストファイルが含まれている場合、プログラムはそのディレクトリに見つかったテキストファイルの名前を表示します。

以下は期待される出力の例です。

Please enter the read path:/home/labex/project/files
Found text files:
file1.txt
file3.txt
file6.txt

これらの手順に従うことで、テキストファイルを選択するJavaプログラムの機能を検証できます。

✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。実力を向上させるために、LabExでさらに多くの実験を行って練習してください。