จะอ่านไฟล์ทั้งหมดในโฟลเดอร์ผ่าน Java ได้อย่างไร
Files.walkFileTree
ดูstackoverflow.com/a/23814217/1115554
จะอ่านไฟล์ทั้งหมดในโฟลเดอร์ผ่าน Java ได้อย่างไร
Files.walkFileTree
ดูstackoverflow.com/a/23814217/1115554
คำตอบ:
public void listFilesForFolder(final File folder) {
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
} else {
System.out.println(fileEntry.getName());
}
}
}
final File folder = new File("/home/you/Desktop");
listFilesForFolder(folder);
Files.walk API พร้อมใช้งานจาก Java 8
try (Stream<Path> paths = Files.walk(Paths.get("/home/you/Desktop"))) {
paths
.filter(Files::isRegularFile)
.forEach(System.out::println);
}
ตัวอย่างใช้รูปแบบลองกับทรัพยากรที่แนะนำในคู่มือ API ช่วยให้มั่นใจได้ว่าจะปิดกระแสไม่ว่าในสถานการณ์ใด
getName()
จะให้ชื่อไฟล์ในไดเรกทอรีเท่านั้นซึ่งอาจเป็นไดเรกทอรีย่อยของต้นฉบับ หากคุณวางแผนที่จะใช้ข้อมูลนี้เพื่อค้นหาไฟล์คุณอาจพบเส้นทางที่กำหนดgetPath()
ให้มีประโยชน์มากกว่า
filter
วิธีนี้ได้เช่นกัน จากนั้นไม่จำเป็นต้องใช้แต่ละครั้ง ดูที่นี่ -> stackoverflow.com/a/26215931/1029251
ใน Java 8 คุณสามารถทำได้
Files.walk(Paths.get("/path/to/folder"))
.filter(Files::isRegularFile)
.forEach(System.out::println);
ซึ่งจะพิมพ์ไฟล์ทั้งหมดในโฟลเดอร์ในขณะที่ไม่รวมไดเรกทอรีทั้งหมด หากคุณต้องการรายการสิ่งต่อไปนี้จะทำ:
Files.walk(Paths.get("/path/to/folder"))
.filter(Files::isRegularFile)
.collect(Collectors.toList())
หากคุณต้องการที่จะกลับมาList<File>
แทนList<Path>
เพียงทำแผนที่มัน:
List<File> filesInFolder = Files.walk(Paths.get("/path/to/folder"))
.filter(Files::isRegularFile)
.map(Path::toFile)
.collect(Collectors.toList());
คุณต้องปิดสตรีมด้วย! มิฉะนั้นคุณอาจพบข้อยกเว้นที่บอกว่ามีไฟล์เปิดอยู่มากเกินไป อ่านที่นี่สำหรับข้อมูลเพิ่มเติม
java.nio.file.Path
? ฉันเพิ่งตรวจสอบวิธี toFile () ควรมีอยู่ก่อนหน้าจาวา 8 -> docs.oracle.com/javase/7/docs/api/java/nio/file/…
คำตอบทั้งหมดในหัวข้อนี้ที่ใช้ประโยชน์จากฟังก์ชั่น Java 8 ใหม่นั้นไม่สนใจที่จะปิดกระแสข้อมูล ตัวอย่างในคำตอบที่ยอมรับควรเป็น:
try (Stream<Path> filePathStream=Files.walk(Paths.get("/home/you/Desktop"))) {
filePathStream.forEach(filePath -> {
if (Files.isRegularFile(filePath)) {
System.out.println(filePath);
}
});
}
จาก javadoc ของFiles.walk
วิธีการ:
กระแสข้อมูลที่ส่งคืนห่อหุ้มอย่างน้อยหนึ่ง DirectoryStreams หากจำเป็นต้องกำจัดทรัพยากรระบบไฟล์อย่างทันท่วงทีควรใช้การสร้างทรัพยากรแบบลองกับทรัพยากรเพื่อให้แน่ใจว่าวิธีการปิดสตรีมจะถูกเรียกใช้หลังจากการดำเนินการสตรีมเสร็จสมบูรณ์
import java.io.File;
public class ReadFilesFromFolder {
public static File folder = new File("C:/Documents and Settings/My Documents/Downloads");
static String temp = "";
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Reading files under the folder "+ folder.getAbsolutePath());
listFilesForFolder(folder);
}
public static void listFilesForFolder(final File folder) {
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
// System.out.println("Reading files under the folder "+folder.getAbsolutePath());
listFilesForFolder(fileEntry);
} else {
if (fileEntry.isFile()) {
temp = fileEntry.getName();
if ((temp.substring(temp.lastIndexOf('.') + 1, temp.length()).toLowerCase()).equals("txt"))
System.out.println("File= " + folder.getAbsolutePath()+ "\\" + fileEntry.getName());
}
}
}
}
}
private static final String ROOT_FILE_PATH="/";
File f=new File(ROOT_FILE_PATH);
File[] allSubFiles=f.listFiles();
for (File file : allSubFiles) {
if(file.isDirectory())
{
System.out.println(file.getAbsolutePath()+" is directory");
//Steps for directory
}
else
{
System.out.println(file.getAbsolutePath()+" is file");
//steps for files
}
}
ใน Java 7 และสูงกว่าคุณสามารถใช้listdir
Path dir = ...;
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
for (Path file: stream) {
System.out.println(file.getFileName());
}
} catch (IOException | DirectoryIteratorException x) {
// IOException can never be thrown by the iteration.
// In this snippet, it can only be thrown by newDirectoryStream.
System.err.println(x);
}
คุณยังสามารถสร้างตัวกรองที่สามารถส่งผ่านไปยังnewDirectoryStream
วิธีการด้านบนได้
DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
public boolean accept(Path file) throws IOException {
try {
return (Files.isRegularFile(path));
} catch (IOException x) {
// Failed to determine if it's a file.
System.err.println(x);
return false;
}
}
};
สำหรับตัวอย่างการกรองอื่น ๆ [ดูเอกสารประกอบ] ( http://docs.oracle.com/javase/tutorial/essential/io/dirs.html#glob )
หนึ่งคำพูดตามที่ได้รับไฟล์ทั้งหมดในไดเรกทอรี
วิธีการFiles.walk(path)
จะส่งคืนไฟล์ทั้งหมดโดยการเดินทรีไฟล์ที่รูทที่ไฟล์เริ่มต้นที่กำหนด
ตัวอย่างเช่นมีแผนผังไฟล์ถัดไป:
\---folder
| file1.txt
| file2.txt
|
\---subfolder
file3.txt
file4.txt
ใช้java.nio.file.Files.walk(Path)
:
Files.walk(Paths.get("folder"))
.filter(Files::isRegularFile)
.forEach(System.out::println);
ให้ผลลัพธ์ต่อไปนี้:
folder\file1.txt
folder\file2.txt
folder\subfolder\file3.txt
folder\subfolder\file4.txt
ในการรับไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันให้ใช้java.nio.file.Files.list(Path)
:
Files.list(Paths.get("folder"))
.filter(Files::isRegularFile)
.forEach(System.out::println);
ผลลัพธ์:
folder\file1.txt
folder\file2.txt
Files.list
ตัวอย่าง หากคุณไม่ต้องการค้นหาแบบเรียกซ้ำสิ่งนี้อาจเป็นตัวเลือกที่ดีที่สุดในบางครั้ง
เพียงเดินผ่านไฟล์ทั้งหมดโดยใช้Files.walkFileTree
(Java 7)
Files.walkFileTree(Paths.get(dir), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("file: " + file);
return FileVisitResult.CONTINUE;
}
});
หากคุณต้องการตัวเลือกเพิ่มเติมคุณสามารถใช้ฟังก์ชั่นนี้ซึ่งมีวัตถุประสงค์เพื่อเติมรายการของไฟล์ที่มีอยู่ในโฟลเดอร์ ตัวเลือกคือ: การเรียกซ้ำและรูปแบบที่จะจับคู่
public static ArrayList<File> listFilesForFolder(final File folder,
final boolean recursivity,
final String patternFileFilter) {
// Inputs
boolean filteredFile = false;
// Ouput
final ArrayList<File> output = new ArrayList<File> ();
// Foreach elements
for (final File fileEntry : folder.listFiles()) {
// If this element is a directory, do it recursivly
if (fileEntry.isDirectory()) {
if (recursivity) {
output.addAll(listFilesForFolder(fileEntry, recursivity, patternFileFilter));
}
}
else {
// If there is no pattern, the file is correct
if (patternFileFilter.length() == 0) {
filteredFile = true;
}
// Otherwise we need to filter by pattern
else {
filteredFile = Pattern.matches(patternFileFilter, fileEntry.getName());
}
// If the file has a name which match with the pattern, then add it to the list
if (filteredFile) {
output.add(fileEntry);
}
}
}
return output;
}
ดีที่สุดเอเดรียน
File directory = new File("/user/folder");
File[] myarray;
myarray=new File[10];
myarray=directory.listFiles();
for (int j = 0; j < myarray.length; j++)
{
File path=myarray[j];
FileReader fr = new FileReader(path);
BufferedReader br = new BufferedReader(fr);
String s = "";
while (br.ready()) {
s += br.readLine() + "\n";
}
}
myarray=new File[10];
ไม่จำเป็นเพราะมันจะถูกเขียนทับโดยบรรทัดถัดไป!
ใช้งานได้ดีjava.io.FileFilter
เท่าที่เห็นในhttps://stackoverflow.com/a/286001/146745
File fl = new File(dir);
File[] files = fl.listFiles(new FileFilter() {
public boolean accept(File file) {
return file.isFile();
}
});
static File mainFolder = new File("Folder");
public static void main(String[] args) {
lf.getFiles(lf.mainFolder);
}
public void getFiles(File f) {
File files[];
if (f.isFile()) {
String name=f.getName();
} else {
files = f.listFiles();
for (int i = 0; i < files.length; i++) {
getFiles(files[i]);
}
}
}
ฉันคิดว่านี่เป็นวิธีที่ดีในการอ่านไฟล์ทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อย
private static void addfiles (File input,ArrayList<File> files)
{
if(input.isDirectory())
{
ArrayList <File> path = new ArrayList<File>(Arrays.asList(input.listFiles()));
for(int i=0 ; i<path.size();++i)
{
if(path.get(i).isDirectory())
{
addfiles(path.get(i),files);
}
if(path.get(i).isFile())
{
files.add(path.get(i));
}
}
}
if(input.isFile())
{
files.add(input);
}
}
ตัวอย่างง่าย ๆ ที่ทำงานกับ Java 1.7 เพื่อแสดงรายการไฟล์ซ้ำในไดเรกทอรีที่ระบุในบรรทัดคำสั่ง:
import java.io.File;
public class List {
public static void main(String[] args) {
for (String f : args) {
listDir(f);
}
}
private static void listDir(String dir) {
File f = new File(dir);
File[] list = f.listFiles();
if (list == null) {
return;
}
for (File entry : list) {
System.out.println(entry.getName());
if (entry.isDirectory()) {
listDir(entry.getAbsolutePath());
}
}
}
}
ในขณะที่ฉันเห็นด้วยกับอุดม Orian และส่วนที่เหลือสำหรับการใช้:
final File keysFileFolder = new File(<path>);
File[] fileslist = keysFileFolder.listFiles();
if(fileslist != null)
{
//Do your thing here...
}
ด้วยเหตุผลบางตัวอย่างทั้งหมดที่นี่ใช้พา ธสัมบูรณ์ (เช่นตลอดทางจากรูทหรือพูดอักษรระบุไดรฟ์ (C: \) สำหรับ windows .. )
ฉันต้องการเพิ่มว่าเป็นไปได้ที่จะใช้เส้นทางสัมพัทธ์เช่นกัน ดังนั้นหากคุณเป็น pwd (ไดเรกทอรีปัจจุบัน / โฟลเดอร์) คือ folder1 และคุณต้องการแยกโฟลเดอร์ 1 / โฟลเดอร์ย่อยคุณเพียงแค่เขียน (ในรหัสด้านบนแทน):
final File keysFileFolder = new File("subfolder");
package com;
import java.io.File;
/**
*
* @author ?Mukesh
*/
public class ListFiles {
static File mainFolder = new File("D:\\Movies");
public static void main(String[] args)
{
ListFiles lf = new ListFiles();
lf.getFiles(lf.mainFolder);
long fileSize = mainFolder.length();
System.out.println("mainFolder size in bytes is: " + fileSize);
System.out.println("File size in KB is : " + (double)fileSize/1024);
System.out.println("File size in MB is :" + (double)fileSize/(1024*1024));
}
public void getFiles(File f){
File files[];
if(f.isFile())
System.out.println(f.getAbsolutePath());
else{
files = f.listFiles();
for (int i = 0; i < files.length; i++) {
getFiles(files[i]);
}
}
}
}
Java 8 Files.walk(..)
เป็นสิ่งที่ดีเมื่อคุณอยู่ soore มันจะไม่โยนหลีกเลี่ยง Java 8 Files.walk ( .. ) สาเหตุของการเลิกจ้าง (java.nio.file.AccessDeniedException)
นี่คือวิธีที่ปลอดภัยไม่ แต่เพื่อความสง่างามเป็น Java 8 Files.walk(..)
:
int[] count = {0};
try {
Files.walkFileTree(Paths.get(dir.getPath()), new HashSet<FileVisitOption>(Arrays.asList(FileVisitOption.FOLLOW_LINKS)),
Integer.MAX_VALUE, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file , BasicFileAttributes attrs) throws IOException {
System.out.printf("Visiting file %s\n", file);
++count[0];
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file , IOException e) throws IOException {
System.err.printf("Visiting failed for %s\n", file);
return FileVisitResult.SKIP_SUBTREE;
}
@Override
public FileVisitResult preVisitDirectory(Path dir , BasicFileAttributes attrs) throws IOException {
System.out.printf("About to visit directory %s\n", dir);
return FileVisitResult.CONTINUE;
}
});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
void getFiles(){
String dirPath = "E:/folder_name";
File dir = new File(dirPath);
String[] files = dir.list();
if (files.length == 0) {
System.out.println("The directory is empty");
} else {
for (String aFile : files) {
System.out.println(aFile);
}
}
}
เพียงเพื่อขยายคำตอบที่ยอมรับฉันเก็บชื่อไฟล์ไว้ใน ArrayList (แทนที่จะทิ้งไว้ที่ System.out.println) ฉันสร้างคลาสผู้ช่วย "MyFileUtils" เพื่อให้สามารถนำเข้าโดยโครงการอื่น:
class MyFileUtils {
public static void loadFilesForFolder(final File folder, List<String> fileList){
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
loadFilesForFolder(fileEntry, fileList);
} else {
fileList.add( fileEntry.getParent() + File.separator + fileEntry.getName() );
}
}
}
}
ฉันเพิ่มเส้นทางแบบเต็มไปยังชื่อไฟล์ คุณจะใช้มันแบบนี้:
import MyFileUtils;
List<String> fileList = new ArrayList<String>();
final File folder = new File("/home/you/Desktop");
MyFileUtils.loadFilesForFolder(folder, fileList);
// Dump file list values
for (String fileName : fileList){
System.out.println(fileName);
}
ArrayList ถูกส่งผ่านโดย "value" แต่ค่าจะถูกใช้เพื่อชี้ไปยังวัตถุ ArrayList เดียวกันที่อยู่ใน JVM Heap ด้วยวิธีนี้การเรียกซ้ำแต่ละครั้งจะเพิ่มชื่อไฟล์ใน ArrayList เดียวกัน (เราไม่ได้สร้าง ArrayList ใหม่ในการเรียกซ้ำแต่ละครั้ง)
คุณสามารถวางพา ธ ของไฟล์เพื่อโต้แย้งและสร้างรายการด้วยพา ธ ไฟล์ทั้งหมดและไม่ต้องใส่รายชื่อด้วยตนเอง จากนั้นใช้สำหรับลูปและตัวอ่าน ตัวอย่างไฟล์ txt:
public static void main(String[] args) throws IOException{
File[] files = new File(args[0].replace("\\", "\\\\")).listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith(".txt"); } });
ArrayList<String> filedir = new ArrayList<String>();
String FILE_TEST = null;
for (i=0; i<files.length; i++){
filedir.add(files[i].toString());
CSV_FILE_TEST=filedir.get(i)
try(Reader testreader = Files.newBufferedReader(Paths.get(FILE_TEST));
){
//write your stuff
}}}
package com.commandline.folder;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;
public class FolderReadingDemo {
public static void main(String[] args) {
String str = args[0];
final File folder = new File(str);
// listFilesForFolder(folder);
listFilesForFolder(str);
}
public static void listFilesForFolder(String str) {
try (Stream<Path> paths = Files.walk(Paths.get(str))) {
paths.filter(Files::isRegularFile).forEach(System.out::println);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void listFilesForFolder(final File folder) {
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
} else {
System.out.println(fileEntry.getName());
}
}
}
}
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class AvoidNullExp {
public static void main(String[] args) {
List<File> fileList =new ArrayList<>();
final File folder = new File("g:/master");
new AvoidNullExp().listFilesForFolder(folder, fileList);
}
public void listFilesForFolder(final File folder,List<File> fileList) {
File[] filesInFolder = folder.listFiles();
if (filesInFolder != null) {
for (final File fileEntry : filesInFolder) {
if (fileEntry.isDirectory()) {
System.out.println("DIR : "+fileEntry.getName());
listFilesForFolder(fileEntry,fileList);
} else {
System.out.println("FILE : "+fileEntry.getName());
fileList.add(fileEntry);
}
}
}
}
}
แสดงรายการไฟล์จากโฟลเดอร์ทดสอบที่อยู่ในพา ธ คลาส
import java.io.File;
import java.io.IOException;
public class Hello {
public static void main(final String[] args) throws IOException {
System.out.println("List down all the files present on the server directory");
File file1 = new File("/prog/FileTest/src/Test");
File[] files = file1.listFiles();
if (null != files) {
for (int fileIntList = 0; fileIntList < files.length; fileIntList++) {
String ss = files[fileIntList].toString();
if (null != ss && ss.length() > 0) {
System.out.println("File: " + (fileIntList + 1) + " :" + ss.substring(ss.lastIndexOf("\\") + 1, ss.length()));
}
}
}
}
}
/**
* Function to read all mp3 files from sdcard and store the details in an
* ArrayList
*/
public ArrayList<HashMap<String, String>> getPlayList()
{
ArrayList<HashMap<String, String>> songsList=new ArrayList<>();
File home = new File(MEDIA_PATH);
if (home.listFiles(new FileExtensionFilter()).length > 0) {
for (File file : home.listFiles(new FileExtensionFilter())) {
HashMap<String, String> song = new HashMap<String, String>();
song.put(
"songTitle",
file.getName().substring(0,
(file.getName().length() - 4)));
song.put("songPath", file.getPath());
// Adding each song to SongList
songsList.add(song);
}
}
// return songs list array
return songsList;
}
/**
* Class to filter files which have a .mp3 extension
* */
class FileExtensionFilter implements FilenameFilter
{
@Override
public boolean accept(File dir, String name) {
return (name.endsWith(".mp3") || name.endsWith(".MP3"));
}
}
คุณสามารถกรองไฟล์ข้อความใด ๆ หรือนามสกุลอื่น ๆ .. เพียงแค่แทนที่ด้วย. MP3
มีคำตอบที่ดีมากมายด้านบนนี่เป็นวิธีการที่แตกต่างกัน: ในโครงการ maven ทุกสิ่งที่คุณใส่ในโฟลเดอร์ทรัพยากรจะถูกคัดลอกโดยค่าเริ่มต้นในโฟลเดอร์เป้าหมาย / ชั้นเรียน เพื่อดูว่ามีอะไรที่รันไทม์
ClassLoader contextClassLoader =
Thread.currentThread().getContextClassLoader();
URL resource = contextClassLoader.getResource("");
File file = new File(resource.toURI());
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f.getName());
}
ตอนนี้เพื่อรับไฟล์จากโฟลเดอร์เฉพาะสมมติว่าคุณมีโฟลเดอร์ชื่อ 'res' ในโฟลเดอร์ทรัพยากรของคุณเพียงแค่แทนที่:
URL resource = contextClassLoader.getResource("res");
หากคุณต้องการเข้าถึงในแพ็คเกจ com.companyName ของคุณ:
contextClassLoader.getResource("com.companyName");
นี้จะอ่านไฟล์นามสกุลไฟล์ที่ระบุในเส้นทางที่กำหนด (ดูโฟลเดอร์ย่อยด้วย)
public static Map<String,List<File>> getFileNames(String
dirName,Map<String,List<File>> filesContainer,final String fileExt){
String dirPath = dirName;
List<File>files = new ArrayList<>();
Map<String,List<File>> completeFiles = filesContainer;
if(completeFiles == null) {
completeFiles = new HashMap<>();
}
File file = new File(dirName);
FileFilter fileFilter = new FileFilter() {
@Override
public boolean accept(File file) {
boolean acceptFile = false;
if(file.isDirectory()) {
acceptFile = true;
}else if (file.getName().toLowerCase().endsWith(fileExt))
{
acceptFile = true;
}
return acceptFile;
}
};
for(File dirfile : file.listFiles(fileFilter)) {
if(dirfile.isFile() &&
dirfile.getName().toLowerCase().endsWith(fileExt)) {
files.add(dirfile);
}else if(dirfile.isDirectory()) {
if(!files.isEmpty()) {
completeFiles.put(dirPath, files);
}
getFileNames(dirfile.getAbsolutePath(),completeFiles,fileExt);
}
}
if(!files.isEmpty()) {
completeFiles.put(dirPath, files);
}
return completeFiles;
}
files container
อย่างไร
สิ่งนี้จะทำงานได้ดี:
private static void addfiles(File inputValVal, ArrayList<File> files)
{
if(inputVal.isDirectory())
{
ArrayList <File> path = new ArrayList<File>(Arrays.asList(inputVal.listFiles()));
for(int i=0; i<path.size(); ++i)
{
if(path.get(i).isDirectory())
{
addfiles(path.get(i),files);
}
if(path.get(i).isFile())
{
files.add(path.get(i));
}
}
/* Optional : if you need to have the counts of all the folders and files you can create 2 global arrays
and store the results of the above 2 if loops inside these arrays */
}
if(inputVal.isFile())
{
files.add(inputVal);
}
}
รับ baseDir แสดงรายการไฟล์และไดเรกทอรีทั้งหมดด้านล่างเขียนซ้ำ
public static List<File> listLocalFilesAndDirsAllLevels(File baseDir) {
List<File> collectedFilesAndDirs = new ArrayList<>();
Deque<File> remainingDirs = new ArrayDeque<>();
if(baseDir.exists()) {
remainingDirs.add(baseDir);
while(!remainingDirs.isEmpty()) {
File dir = remainingDirs.removeLast();
List<File> filesInDir = Arrays.asList(dir.listFiles());
for(File fileOrDir : filesInDir) {
collectedFilesAndDirs.add(fileOrDir);
if(fileOrDir.isDirectory()) {
remainingDirs.add(fileOrDir);
}
}
}
}
return collectedFilesAndDirs;
}
เพื่อป้องกัน Nullpointerexceptions ในฟังก์ชั่น listFiles () และเรียกไฟล์ทั้งหมดซ้ำจากไดเรกทอรีย่อยด้วยซ้ำ
public void listFilesForFolder(final File folder,List<File> fileList) {
File[] filesInFolder = folder.listFiles();
if (filesInFolder != null) {
for (final File fileEntry : filesInFolder) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry,fileList);
} else {
fileList.add(fileEntry);
}
}
}
}
List<File> fileList = new List<File>();
final File folder = new File("/home/you/Desktop");
listFilesForFolder(folder);