Java 获取文件夹名而不是.mp3文件{Android} public ArrayList getPlaylist(){ File home=Environment.getExternalStorageDirectory(); if(home.listFiles(新文件扩展筛选器()).length>0){ Log.d(Variables.DEBUGTAG,“Filter Files=-->”+home.listFiles().length); 对于(文件:home.listFiles(新的FileExtensionFilter())){ HashMap宋=新HashMap(); song.put(“songTitle”,file.getName().substring(0,(file.getName().length()-4)); put(“songPath”,file.getPath()); Log.d(Variables.DEBUGTAG,“读取文件”); //将每首歌曲添加到歌曲列表 歌曲列表。添加(歌曲); } } //返回歌曲列表数组 Log.d(Variables.DEBUGTAG,“向系统发送文件”); 返回歌曲列表; } 类FileExtensionFilter实现FilenameFilter{ @凌驾 公共布尔接受(文件目录,字符串文件名){ return(filename.endsWith(“.mp3”)| filename.endsWith(“.mp3”); } }

Java 获取文件夹名而不是.mp3文件{Android} public ArrayList getPlaylist(){ File home=Environment.getExternalStorageDirectory(); if(home.listFiles(新文件扩展筛选器()).length>0){ Log.d(Variables.DEBUGTAG,“Filter Files=-->”+home.listFiles().length); 对于(文件:home.listFiles(新的FileExtensionFilter())){ HashMap宋=新HashMap(); song.put(“songTitle”,file.getName().substring(0,(file.getName().length()-4)); put(“songPath”,file.getPath()); Log.d(Variables.DEBUGTAG,“读取文件”); //将每首歌曲添加到歌曲列表 歌曲列表。添加(歌曲); } } //返回歌曲列表数组 Log.d(Variables.DEBUGTAG,“向系统发送文件”); 返回歌曲列表; } 类FileExtensionFilter实现FilenameFilter{ @凌驾 公共布尔接受(文件目录,字符串文件名){ return(filename.endsWith(“.mp3”)| filename.endsWith(“.mp3”); } },java,android,Java,Android,获取播放列表时,它会返回文件夹或路径,而不是“我的外部存储帮助”中的文件。。。。!!! home.listFiles()数组包含模拟/0/sdcard中的所有文件夹。。 现在if块为false,因为没有文件夹包含.mp3扩展名。如果我对if块进行注释,并且没有使用FileExtensionFilter,则for块只包含文件夹,没有任何文件。…您只在外部存储的根文件夹下直接查找文件(Environment.getExternalStorageDirectory()),因此,这里没有mp3文件是有道

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

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

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

例如:

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"));
    }
}
public List getPlaylist(){
File home=Environment.getExternalStorageDirectory();
返回getPlaylist(主页);
}
公共列表getPlaylist(文件根目录){
List songsList=new ArrayList();
if(root.listFiles(新文件扩展筛选器()).length>0){
Log.d(Variables.DEBUGTAG,“Filter Files=-->”+home.listFiles().length);
对于(文件:root.listFiles(新的FileExtensionFilter())){
HashMap宋=新HashMap();
song.put(“songTitle”,file.getName().substring(0,(file.getName().length()-4));
put(“songPath”,file.getPath());
Log.d(Variables.DEBUGTAG,“读取文件”);
//将每首歌曲添加到歌曲列表
歌曲列表。添加(歌曲);
}
}
对于(文件:root.listFiles()){
if(file.isDirectory()){
addAll(getPlaylist(文件));
}
}
返回歌曲列表;
}

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

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

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

例如:

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"));
    }
}
public List getPlaylist(){
File home=Environment.getExternalStorageDirectory();
返回getPlaylist(主页);
}
公共列表getPlaylist(文件根目录){
List songsList=new ArrayList();
if(root.listFiles(新文件扩展筛选器()).length>0){
Log.d(Variables.DEBUGTAG,“Filter Files=-->”+home.listFiles().length);
对于(文件:root.listFiles(新的FileExtensionFilter())){
HashMap宋=新HashMap();
song.put(“songTitle”,file.getName().substring(0,(file.getName().length()-4));
put(“songPath”,file.getPath());
Log.d(Variables.DEBUGTAG,“读取文件”);
//将每首歌曲添加到歌曲列表
歌曲列表。添加(歌曲);
}
}
对于(文件:root.listFiles()){
if(file.isDirectory()){
addAll(getPlaylist(文件));
}
}
返回歌曲列表;
}

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

Thanx Eran完美问题已解决@阿诺德布朗有什么区别?你可以搜索任何你想要的文件名过滤器。Thanx Eran完美的问题解决了@阿诺德布朗有什么区别?你可以搜索任何你想要的文件名过滤器。Thanx Eran完美的问题解决了@阿诺德布朗有什么区别?您可以搜索所需的任何文件名筛选器。