Android 从sd卡(目录)上获取文件列表的好方法是什么?
我很乐意读写预设的文件,可以手动填充listview,但我希望有一个我错过的官方(或非官方)文件浏览器,或其他更优雅的解决方案,为用户提供目录列表,让他们选择一个文件Android 从sd卡(目录)上获取文件列表的好方法是什么?,android,Android,我很乐意读写预设的文件,可以手动填充listview,但我希望有一个我错过的官方(或非官方)文件浏览器,或其他更优雅的解决方案,为用户提供目录列表,让他们选择一个文件 final String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { File[] files = Environment.getExternalStorageDirectory().li
final String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
File[] files = Environment.getExternalStorageDirectory().listFiles();
} else {
...
}
您可以尝试另一种方法代码:在android中将所有音乐文件或文档文件或视频文件、图像从外部存储列到listView
ArrayList<String> filenames;
ArrayAdapter<String> adapter;
ArrayList文件名;
阵列适配器;
//onCreate方法
songlist=findviewbyd(R.id.songlist)//歌曲列表是ListView小部件
filenames=newarraylist();
getMusic();//音乐文件功能
adapter=new ArrayAdapter(YourActivity.this、android.R.layout.simple\u list\u item\u 1、文件名);
songlist.setAdapter(适配器);
//getMusic()是从外部存储器获取和过滤所有音乐文件的方法
private void getMusic(){
文件路径=Environment.getExternalStorageDirectory();
字符串文件名;
队列文件=新建LinkedList();//链接列表
files.addAll(Arrays.asList(path.listFiles());//在链接列表中添加path的所有文件
而(!files.isEmpty()){
File=files.remove();
if(file.isDirectory()){
files.addAll(Arrays.asList(file.listFiles());
}
else if(file.getName().endsWith(“.mp3”){//筛选文件
filename=file.getName();//根据其扩展名
filenames.add(filename);//文件名是字符串ListArray
}
else if(file.getName().endsWith(“.ogg”)){
filename=file.getName();
添加(文件名);
}
else if(file.getName().endsWith(“.amr”)){
filename=file.getName();
添加(文件名);
}
else if(file.getName().endsWith(“.wav”)){
filename=file.getName();
添加(文件名);
}
else if(file.getName().endsWith(“.wma”)){
filename=file.getName();
添加(文件名);
}
else if(file.getName().endsWith(“.flac”)){
filename=file.getName();
添加(文件名);
}
}
}
只需将字符串值(如(.mp3、.wav)更改为
.您的文件扩展名
看起来它可以工作,但最好使用Environment.getExternalStorageDirectory()覆盖文件fileList=new文件(“/sdcard”);以防它被称为“SD卡”以外的东西!我需要的命令是:path.list();path.listFiles();和对话框。设置项(路径列表);-甚至不需要listview:)在代码中发现一个输入错误,否则它将无法编译:Files[]Files=…->File[]files=…还有一个方法
.list()
,它只返回文件名,因此不必获取所有文件对象。
ArrayList<String> filenames;
ArrayAdapter<String> adapter;
songlist = findViewById(R.id.songlist); //songlist is ListView widget
filenames = new ArrayList<>();
getMusic(); // music files funtions
adapter=new ArrayAdapter<>(YourActivity.this, android.R.layout.simple_list_item_1, filenames);
songlist.setAdapter(adapter);
private void getMusic() {
File path = Environment.getExternalStorageDirectory();
String filename ;
Queue<File> files = new LinkedList<>(); //Linklist
files.addAll(Arrays.asList(path.listFiles())); //adding all files of path in linklist
while (!files.isEmpty()){
File file = files.remove();
if (file.isDirectory()){
files.addAll(Arrays.asList(file.listFiles()));
}
else if (file.getName().endsWith(".mp3")){ //filtering files
filename = file.getName(); // according to their extension
filenames.add(filename); //filenames is string ListArray
}
else if (file.getName().endsWith(".ogg")){
filename = file.getName();
filenames.add(filename);
}
else if (file.getName().endsWith(".amr")){
filename = file.getName();
filenames.add(filename);
}
else if (file.getName().endsWith(".wav")){
filename = file.getName();
filenames.add(filename);
}
else if (file.getName().endsWith(".wma")){
filename = file.getName();
filenames.add(filename);
}
else if (file.getName().endsWith(".flac")){
filename = file.getName();
filenames.add(filename);
}
}
}