listFiles(),但忽略Android中的一个子目录
我需要得到一个文件列表,但忽略一个特定的子目录。 例如这里是一个示例结构。
Content ->1 -->file_a.mp4 -->file_b.mp4 ->2 -->file_c.mp4 -->file_d.mp4 ->Bonus -->1 --->file_e.mp4 --->file_f.mp4
我需要能够获得排除奖励目录的文件/目录列表。
我还需要单独列出奖励目录的文件,但我认为这可以通过使用常规方法轻松解决。
如何执行列表文件,但忽略目录?
这是我的示例代码将返回一切
final List boxsets = getCloudBoxsetsWithTrackData(context); final File[] boxsetFiles = dir.listFiles(); if (boxsetFiles != null) { for (File subDir : boxsetFiles) { if (subDir.isDirectory()) { for (Boxset boxset : boxsets) { if (subDir.getName().equalsIgnoreCase(String.valueOf(boxset.persistentId))) { DBHandler.getInstance(context).moveBoxsetToDeviceList(boxset); DownloadLibrarian.getInstance(context).stopDownload(boxset); } } } } }
您可以使用FileFilter
来获取不包括Bonus
的子目录列表
File[] nonBonusDirs = dir.listFiles(new FileFilter() { @Override public boolean accept(File file) { return file.isDirectory() && !file.getName().equalsIgnoreCase("bonus"); } });
然后您可以获取不在Bonus
目录中的所有文件的列表
List filesNotInBonusDir = new ArrayList<>(); for (File directory : nonBonusDirs) { filesNotInBonusDir.addAll(Arrays.asList(directory.listFiles())); }
虽然当然这些诡计在Kotlin中要好得多,因为flatMap
;)
val filesNotInBonusDir: List = dir.listFiles() .filter { it.isDirectory && !it.name.equals("bonus", ignoreCase = true) } .flatMap { it.listFiles().toList() }
- ListView可以出现在Activity中,但不能出现在Fragment中
- 结果一样,但是测试用例没有通过单元测试
- ListView:平滑滚动到底部
- 我无法在Android中的类中初始化我的数组(MutableList)
- Kotlin和杰克不受支持(Android Studio 2.3.2)
- Android Studio Package 2.2 RC2结构
- Android版Azure移动应用程序框架(仅限Kotlin)
- 无法转换为org.jetbrains.kotlin.java.model.types.JeClassInitializerExecutableTypeMirror
- 将GsonBuilder转换成Kotlin