列出所有文件夹中的所有文件在一个列表中

您好我正在寻找解决scheme,以列出根/ Android设备的所有文件。

假设根目录下有3个文件夹,但是我希望在一个列表中显示所有这些文件夹中的所有文件。

现在如果使用

File f=new File("/sdcard"); 

然后它会列出所有文件从SD卡文件夹只..如果我将使用

  File f=new File("/download"); 

然后它会列出所有文件从下载文件夹只..如果我将使用

  File f=new File("/"); 

然后它将只列出根目录文件…而不是/ sdcard或/下载的文件..

那么我应该遵循哪些步骤来列出带有filter的所有文件,以便仅列出根目录中所有文件夹的.csv文件。

谢谢..

尝试这个:

  ..... List<File> files = getListFiles(new File("YOUR ROOT")); .... private List<File> getListFiles(File parentDir) { ArrayList<File> inFiles = new ArrayList<File>(); File[] files = parentDir.listFiles(); for (File file : files) { if (file.isDirectory()) { inFiles.addAll(getListFiles(file)); } else { if(file.getName().endsWith(".csv")){ inFiles.add(file); } } } return inFiles; } 

或不带recursion的变体:

 private List<File> getListFiles2(File parentDir) { List<File> inFiles = new ArrayList<>(); Queue<File> files = new LinkedList<>(); files.addAll(Arrays.asList(parentDir.listFiles())); while (!files.isEmpty()) { File file = files.remove(); if (file.isDirectory()) { files.addAll(Arrays.asList(file.listFiles())); } else if (file.getName().endsWith(".csv")) { inFiles.add(file); } } return inFiles; } 

我修改了Vyacheslav的解决scheme,因为我只需要目录中的文件名。 也许这会对某人有帮助。

 ... List<String> files = getList(new File("YOUR ROOT")); ... private List<String> getList(File parentDir, String pathToParentDir) { ArrayList<String> inFiles = new ArrayList<String>(); String[] fileNames = parentDir.list(); for (String fileName : fileNames) { if (fileName.toLowerCase().endsWith(".txt") || fileName.toLowerCase().endsWith(".rtf") || fileName.toLowerCase().endsWith(".txd")) { inFiles.add(pathToParentDir + fileName); } else { File file = new File(parentDir.getPath() + "/" + fileName); if (file.isDirectory()) { inFiles.addAll(getList(file, pathToParentDir + fileName + "/")); } } } return inFiles; } 

你可以使用下面的方法,

 private int readLogList( String filePath ) { File directory = Environment.getExternalStorageDirectory(); File folder = new File( directory + ConstantCodes.FILE_SEPARATOR + filePath ); if ( !folder.exists() ) { return 0; } return folder.list().length; }