gpt4 book ai didi

java - 获取文件夹名称而不是 .mp3 文件 {Android}

转载 作者:太空宇宙 更新时间:2023-11-04 13:46:41 25 4
gpt4 key购买 nike

public ArrayList<HashMap<String, String>> getPlaylist() {
File home=Environment.getExternalStorageDirectory();
if (home.listFiles(new FileExtensionFilter()).length > 0) {
Log.d(Variables.DEBUGTAG, "Filter Files=-->" + home.listFiles().length);
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());
Log.d(Variables.DEBUGTAG, "Reading Files");

// Adding each song to SongList
songsList.add(song);

}
}
// return songs list array
Log.d(Variables.DEBUGTAG, "Sending files to system");

return songsList;

}

class FileExtensionFilter implements FilenameFilter {
@Override
public boolean accept(File dir, String filename) {

return (filename.endsWith(".mp3") || filename.endsWith(".MP3"));
}
}

在获取播放列表时,它返回文件夹或路径,而不是我的外部存储中的文件帮助....!home.listFiles() 数组包含 emulated/0/sdcard 中的所有文件夹。现在 if block 是 false,因为没有文件夹包含 .mp3 扩展名,如果我注释 if block 并且不使用 FileExtensionFilter 那么 for block 仅包含文件夹而不包含任何文件....

最佳答案

您只是在直接在外部存储的根文件夹 (Environment.getExternalStorageDirectory()) 下查找文件,因此那里没有 mp3 文件是有道理的。您应该递归搜索该目录的子文件夹才能找到 mp3 文件。

调用home.listFiles()(不带过滤器),并为每个目录调用getPlayList()。为此,您必须向 getPlayList 方法添加一个 File 参数。每个递归调用都会返回一个 ArrayList,其中包含其子文件夹树包含的所有 mp3 文件的详细信息。

例如:

public List<Map<String, String>> getPlaylist() {
File home=Environment.getExternalStorageDirectory();
return getPlaylist (home);
}

public List<Map<String, String>> getPlaylist(File root) {
List<Map<String, String>> songsList = new ArrayList<>();
if (root.listFiles(new FileExtensionFilter()).length > 0) {
Log.d(Variables.DEBUGTAG, "Filter Files=-->" + home.listFiles().length);
for (File file : root.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());
Log.d(Variables.DEBUGTAG, "Reading Files");

// Adding each song to SongList
songsList.add(song);

}
}
for (File file : root.listFiles()) {
if (file.isDirectory ()) {
songsList.addAll(getPlaylist(file));
}
}

return songsList;
}

尽管对当前目录中的所有文件进行一次迭代可能会更有效。对于子目录,您将进行递归调用;对于文件,您将检查文件名以确定它是否是应将其信息添加到列表中的 mp3。

关于java - 获取文件夹名称而不是 .mp3 文件 {Android},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30754146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com