जावा के माध्यम से एक फ़ोल्डर में सभी फाइलें कैसे पढ़ें?
Files.walkFileTree
, देख stackoverflow.com/a/23814217/1115554
जावा के माध्यम से एक फ़ोल्डर में सभी फाइलें कैसे पढ़ें?
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 एपीआई जावा 8 से उपलब्ध है।
try (Stream<Path> paths = Files.walk(Paths.get("/home/you/Desktop"))) {
paths
.filter(Files::isRegularFile)
.forEach(System.out::println);
}
उदाहरण एपीआई गाइड में सुझाए गए संसाधनों के साथ-साथ पैटर्न का उपयोग करता है । यह सुनिश्चित करता है कि किसी भी परिस्थिति में धारा बंद नहीं होगी।
getName()
केवल अपनी निर्देशिका में फ़ाइल का नाम देगा, जो मूल का एक उपनिर्देशिका हो सकता है। यदि आप फ़ाइलों को खोजने के लिए इस जानकारी का उपयोग करने की योजना बनाते हैं, तो आप getPath()
अधिक उपयोगी होने के लिए दिए गए मार्ग को पा सकते हैं ।
filter
विधि का उपयोग भी कर सकते हैं । तब forEach की आवश्यकता नहीं है। यहां देखें -> stackoverflow.com/a/26215931/1029251
File folder = new File("/Users/you/folder/");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles) {
if (file.isFile()) {
System.out.println(file.getName());
}
}
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
? मैंने सिर्फ jF 8 से पहले ही toFile () विधि की जाँच की थी
इस विषय पर सभी उत्तर जो नए जावा 8 कार्यों का उपयोग करते हैं, धारा को बंद करने की उपेक्षा कर रहे हैं। स्वीकृत उत्तर में उदाहरण होना चाहिए:
try (Stream<Path> filePathStream=Files.walk(Paths.get("/home/you/Desktop"))) {
filePathStream.forEach(filePath -> {
if (Files.isRegularFile(filePath)) {
System.out.println(filePath);
}
});
}
Files.walk
विधि के javadoc से :
लौटी स्ट्रीम एक या एक से अधिक 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
}
}
जावा 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
(जावा 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];
आवश्यक नहीं है, क्योंकि यह अगली पंक्ति द्वारा अधिलेखित हो जाएगा!
https://stackoverflow.com/a/286001/146745java.io.FileFilter
पर देखा गया अच्छा उपयोग
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);
}
}
साधारण उदाहरण जो कमांड लाइन पर निर्दिष्ट निर्देशिकाओं में फ़ाइलों की पुनरावृत्ति सूची के लिए जावा 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());
}
}
}
}
जबकि मैं रिच, ओरियन और बाकी का उपयोग करने के लिए सहमत हूं:
final File keysFileFolder = new File(<path>);
File[] fileslist = keysFileFolder.listFiles();
if(fileslist != null)
{
//Do your thing here...
}
किसी कारण से यहाँ सभी उदाहरण निरपेक्ष पथ का उपयोग करते हैं (यानी सभी तरह से रूट, या, कहते हैं, ड्राइव अक्षर (C: \) खिड़कियों के लिए ...)
मैं यह जोड़ना चाहूंगा कि रिश्तेदार पथ का उपयोग करना संभव है । इसलिए, यदि आप pwd (वर्तमान निर्देशिका / फ़ोल्डर) फ़ोल्डर 1 हैं और आप फ़ोल्डर 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]);
}
}
}
}
जावा 8 Files.walk(..)
अच्छा है जब आप बहुत अधिक होते हैं तो यह जावा 8 फाइल्स से बच नहीं पाएगा ।walk (..) समाप्ति का कारण (java.nio.file.AccessDeniedException) ।
यहाँ एक सुरक्षित समाधान है, हालाँकि जावा 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" द्वारा पारित किया जाता है, लेकिन JVM हीप में रहने वाले समान ArrayList ऑब्जेक्ट को इंगित करने के लिए मान का उपयोग किया जाता है। इस तरह, प्रत्येक पुनरावर्तन कॉल उसी 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 से बदल दें
ऊपर कई अच्छे उत्तर हैं, यहां एक अलग दृष्टिकोण है: एक मावेन प्रोजेक्ट में, संसाधन फ़ोल्डर में आपके द्वारा डाली गई हर चीज को लक्ष्य / कक्षाओं के फ़ोल्डर में डिफ़ॉल्ट रूप से कॉपी किया जाता है। यह देखने के लिए कि रनटाइम पर क्या उपलब्ध है
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);
}
}
एक बेसडिअर को देखते हुए, इसके नीचे सभी फाइलों और निर्देशिकाओं को सूचीबद्ध करता है, जो इसे लिखे गए हैं।
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;
}
Nullpointerexception को 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);