可能な重複:
フォルダ内のすべてのファイルを読みます
フォルダ内のファイルのすべての名前のリストを作成する必要があります。
たとえば、私が持っているなら:
000.jpg
012.jpg
013.jpg
[000,012,013]
を値としてArrayList
に格納したいです。
Javaでそれをするための最良の方法は何ですか?
シモンズ:私はMac OS Xを使っています
あなたはそのようにすることができます:
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ファイルのみを取得しますか、それともすべてのファイルを取得しますか?
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());
}
}
これは ドキュメント を見る方法です。
まず、IOを扱っているので、Java.io
パッケージ を見てください。
おもしろそうに見える2つのクラスがあります: FileFilter と FileNameFilter 。最初の部分をクリックすると、 File クラスにlistFiles()
メソッドがあることがわかりました。そしてそのメソッドのドキュメンテーションは言います:
この抽象パス名で示されるディレクトリ内のファイルを示す抽象パス名の配列を返します。
File
JavaDocを上にスクロールすると、コンストラクタが見えます。 File
インスタンスを作成し、それにlistFiles()
を呼び出すことができるようにするために必要なのはこれですべてです。さらにスクロールすると、ファイルが異なるオペレーティングシステムでどのように命名されるかについてのいくつかの情報を見ることができます。