读取 Android 根目录下的文件或文件夹有多种方法,以下是一些通用的方法:
- 使用Context类的getExternalStorageDirectory()方法:
这是最简单的方法之一,可以使用以下代码实现:
File rootDirectory = Environment.getExternalStorageDirectory();
getExternalStorageDirectory()
方法返回一个File
对象,该对象代表SD卡根目录,可以根据需要读取其中的文件或文件夹。
- 使用Storage Access Framework:
Storage Access Framework(SAF)旨在通过提供一种标准的API,让应用程序可以安全地访问用户设备上的存储,并在文件系统层面实现,并提供更高的权限控制。
可以使用以下代码实现:
// 打开系统的文件浏览器
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, READ_REQUEST_CODE);
在onActivityResult()
方法中,可以获得用户选择的文档树:
if(requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
Uri treeUri = data.getData();
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
// Do something with pickedDir
}
其中pickedDir
表示用户选定的目录,可以通过调用listFiles()
方法来列出文件和文件夹,例如:
for(DocumentFile file : pickedDir.listFiles()) {
if(file.isDirectory()) {
Log.d(TAG, "Directory: " + file.getName());
} else {
Log.d(TAG, "File: " + file.getName());
}
}
示例说明:
- 示例一:使用
getExternalStorageDirectory()
方法读取SD卡根目录下所有文件和文件夹。
File rootDirectory = Environment.getExternalStorageDirectory();
for(File file : rootDirectory.listFiles()) {
if(file.isDirectory()) {
Log.d(TAG, "Directory: " + file.getName());
} else {
Log.d(TAG, "File: " + file.getName());
}
}
- 示例二:使用Storage Access Framework读取某个文件夹下的所有文件和文件夹。
// 打开系统的文件浏览器
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, READ_REQUEST_CODE);
// 获取用户选择的文档树
if(requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
Uri treeUri = data.getData();
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
// 列出文件夹下的所有文件和文件夹
for(DocumentFile file : pickedDir.listFiles()) {
if(file.isDirectory()) {
Log.d(TAG, "Directory: " + file.getName());
} else {
Log.d(TAG, "File: " + file.getName());
}
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:读取android根目录下的文件或文件夹实例 - Python技术站