如何在android中获取存储在sd卡中的文件名
Posted
技术标签:
【中文标题】如何在android中获取存储在sd卡中的文件名【英文标题】:how to get the file names stored in sd card in android 【发布时间】:2011-06-01 11:10:15 【问题描述】:我在 SD 卡中有一个文件夹,其中包含多个文件。 现在我需要获取这些文件的名称。 有人知道如何获取存储在 sd 卡中的文件名吗?
任何帮助将不胜感激。 非常感谢。
【问题讨论】:
【参考方案1】:Environment.getExternalStorageDirectory
会给你一个与 SDCARD 对应的File
。然后你只需要使用File
方法。
应该是这样的:
File sdCardRoot = Environment.getExternalStorageDirectory();
File yourDir = new File(sdCardRoot, "yourpath");
for (File f : yourDir.listFiles())
if (f.isFile())
String name = f.getName();
// make something with the name
一点建议:来自 KitKat 及更高版本,这需要READ_EXTERNAL_STORAGE
权限。
【讨论】:
你查过list()
和listFiles()
这两个方法的源码吗?它们之间有一点区别。有趣的是知道差异是什么。
@Martjin :在内部,listFiles
使用 list 创建文件名列表,并创建 File
对象。但由于 OP 只想拥有文件,我更喜欢使用 listFiles
。
@ValentinRocher 如何获取文件路径? - 文件.getpath() ?还是有其他方法?
你可能会使用 getCanonicalPath() 或类似的东西,看看 File javadoc【参考方案2】:
在 android 5.0 Lollipop 中,我发现我们需要在 Manifest 中添加权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
如果没有,我们在 sdcard 中看不到任何文件。我需要一个小时才能找到这个!
【讨论】:
【参考方案3】:如果您想从 FOLDER 的特定路径检索所有文件和文件夹,请使用此代码,它将帮助您
String path="/mnt/sdcard/dcim"; //lets its your path to a FOLDER
String root_sd = Environment.getExternalStorageDirectory().toString();
File file = new File(path) ;
File list[] = file.listFiles();
for(File f:list)
filename.add(f.getName());//add new files name in the list
【讨论】:
【参考方案4】: ArrayList<String>nameList = new ArrayList<String>();
File yourDir = new File(Environment.getExternalStorageDirectory(), "/myFolder");
for (File f : yourDir.listFiles())
if (f.isFile())
nameList.add(f.getName);
【讨论】:
【参考方案5】:/**
* Return list of files from path. <FileName, FilePath>
*
* @param path - The path to directory with images
* @return Files name and path all files in a directory, that have ext = "jpeg", "jpg","png", "bmp", "gif"
*/
private List<String> getListOfFiles(String path)
File files = new File(path);
FileFilter filter = new FileFilter()
private final List<String> exts = Arrays.asList("jpeg", "jpg",
"png", "bmp", "gif");
@Override
public boolean accept(File pathname)
String ext;
String path = pathname.getPath();
ext = path.substring(path.lastIndexOf(".") + 1);
return exts.contains(ext);
;
final File [] filesFound = files.listFiles(filter);
List<String> list = new ArrayList<String>();
if (filesFound != null && filesFound.length > 0)
for (File file : filesFound)
list.add(file.getName());
return list;
这将为您提供文件夹中的图像列表。您可以修改代码以获取所有文件。
【讨论】:
以上是关于如何在android中获取存储在sd卡中的文件名的主要内容,如果未能解决你的问题,请参考以下文章