web-dev-qa-db-ja.com

フォルダ内のすべてのファイルのファイル名を取得する

可能な重複:
フォルダ内のすべてのファイルを読みます

フォルダ内のファイルのすべての名前のリストを作成する必要があります。

たとえば、私が持っているなら:

000.jpg
012.jpg
013.jpg

[000,012,013]を値としてArrayListに格納したいです。

Javaでそれをするための最良の方法は何ですか?

シモンズ:私はMac OS Xを使っています

365
user680406

あなたはそのようにすることができます:

File folder = new File("your/path");
File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) {
  if (listOfFiles[i].isFile()) {
    System.out.println("File " + listOfFiles[i].getName());
  } else if (listOfFiles[i].isDirectory()) {
    System.out.println("Directory " + listOfFiles[i].getName());
  }
}

JPEGファイルのみを取得しますか、それともすべてのファイルを取得しますか?

698

File オブジェクトを作成し、ディレクトリパスをコンストラクタに渡します。 listFiles()を使用してディレクトリ内の各ファイルのFileオブジェクトの配列を取得してから、getName()メソッドを呼び出してファイル名を取得します。

List<String> results = new ArrayList<String>();


File[] files = new File("/path/to/the/directory").listFiles();
//If this pathname does not denote a directory, then listFiles() returns null. 

for (File file : files) {
    if (file.isFile()) {
        results.add(file.getName());
    }
}
121
Sean Kleinjung

これは ドキュメント を見る方法です。

まず、IOを扱っているので、Java.ioパッケージ を見てください。

おもしろそうに見える2つのクラスがあります: FileFilterFileNameFilter 。最初の部分をクリックすると、 File クラスにlistFiles()メソッドがあることがわかりました。そしてそのメソッドのドキュメンテーションは言います:

この抽象パス名で示されるディレクトリ内のファイルを示す抽象パス名の配列を返します。

File JavaDocを上にスクロールすると、コンストラクタが見えます。 Fileインスタンスを作成し、それにlistFiles()を呼び出すことができるようにするために必要なのはこれですべてです。さらにスクロールすると、ファイルが異なるオペレーティングシステムでどのように命名されるかについてのいくつかの情報を見ることができます。

61
Anon