0

短いアプリケーションを書きたいです。フォルダーを検索するには、ファイルを参照する必要があります。フォルダーが見つかった場合は、コンソールにフォルダーの名前とフォルダーへの書き込みを行います。次に、フォルダに含まれる txt ファイルの名前をコンソールに書き込みます。

私のコード:

import java.io.File;

public class test {
    public static void search(File f) {

        File[] tab = f.listFiles();
        for (File file1 : tab) {
            if (file1.isDirectory()) {
                search(file1);
            } else {
                if (Txt(file1)) {
                    System.out.println("+ " + file1);
                }
            }
        }
    }

    public static boolean Txt(File f) {
        return f.getName().substring(f.getName().length() - 4).equals(".txt");
    }

    public static void main(String[] args) {
        try {
            File f = new File("/home/mati/Pulpit");
            search(f);
        } catch (Exception e) {
        }

    }
}

コードの結果:

+ New Folder
    - aaa.txt
    - abc.txt
    - abf.txt
+ New Folder2
    - abgh.txt

私のプログラムはtxtファイルのみを書き込みますが、修正方法がわかりません...

4

1 に答える 1

0

2 つのこと: まず、フォルダー名を表示するには、「if (file1.isDirectory())」条件付きのコードのブランチに System.out を追加する必要があります。「else」部分に既に System.out があるため、ファイル名が表示されています。

第二に、ただし、フォルダー内にフォルダーがある場合、これはおそらく希望どおりには機能しません。すべてのフォルダが 1 つのレベルのインデントで表示され、すべてのファイルが別のレベルで表示されます。ただし、他のフォルダーにネストされているフォルダーを確認することはできません。

于 2013-01-15T21:46:55.807 に答える