Android 根据文件名获取文件路径
时间: 2023-09-12 09:09:08 浏览: 139
文件名查找文件路径
你可以使用以下方法来根据文件名获取文件路径:
1. 遍历设备上的文件系统,搜索匹配的文件名。
```java
public String getFilePathByFileName(String fileName) {
File rootDir = Environment.getExternalStorageDirectory(); // 获取外部存储根目录
String filePath = searchFile(rootDir, fileName);
return filePath;
}
private String searchFile(File file, String fileName) {
if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null) {
for (File child : files) {
String filePath = searchFile(child, fileName);
if (filePath != null) {
return filePath;
}
}
}
} else {
if (file.getName().equals(fileName)) {
return file.getAbsolutePath();
}
}
return null;
}
```
2. 使用 ContentResolver 查询匹配的文件。
```java
public String getFilePathByFileName(String fileName, Context context) {
Uri uri = MediaStore.Files.getContentUri("external");
String[] projection = {MediaStore.Files.FileColumns.DATA};
String selection = MediaStore.Files.FileColumns.DISPLAY_NAME + "=?";
String[] selectionArgs = {fileName};
Cursor cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null);
if (cursor != null && cursor.moveToFirst()) {
int columnIndex = cursor.getColumnIndex(MediaStore.Files.FileColumns.DATA);
String filePath = cursor.getString(columnIndex);
cursor.close();
return filePath;
}
return null;
}
```
这两种方法分别通过遍历文件系统和查询 ContentResolver 来获取文件路径。注意,在使用这些方法之前,确保你已经获取了相应的权限,例如读取外部存储的权限。
阅读全文