как получить список всех файлов в папке на Java
Подскажите как получить список файлов в папке, вот код:
File dir = new File(path); //path указывает на директорию
File[] arrFiles = dir.listFiles();
List<File> lst = Arrays.asList(arrFiles);
но он добавляет не только файлы, а и директории в этой папке А есть метод (или готовое решение) который выдает только файлы?
Ответы (3 шт):
Автор решения: Olmicron
→ Ссылка
File dir = new File(path); //path указывает на директорию
List<File> lst = new ArrayList<>();
for ( File file : dir.listFiles() ){
if ( file.isFile() )
lst.add(file);
}
Автор решения: mrprogre
→ Ссылка
Я делал что-то такое когда-то:
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.io.File;
public class Files {
public static void main(String[] args) {
File currentDir = new File("d:/tmp");
displayAllFilesDirectories(currentDir);
}
// Отображение все файлов и папок основной дирректории
public static void displayAllFilesDirectories(File dir) {
try {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
System.out.println("directory: " + file.getCanonicalPath());
// Вывести файлы подкаталогов, ежели нужно: displayAllFilesDirectories(file);
} else {
// Форматирование даты изменения файла с миллисекунд на адекватную
long lastModified = file.lastModified();
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
System.out.println(" file: " + file.getCanonicalPath() + ", размер файла: "
+ file.length() + " byte, дата изменения: " + sdf.format(new Date(lastModified)));
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Автор решения: Vladislav Pyatkov
→ Ссылка
Вообще File#listFiles себя не очень показывает (медленный), лучше как-то так:
Files.walk(Paths.get("/path/to/folder"))
.filter(Files::isRegularFile)
.collect(Collectors.toList())