androidq获取文件正式路径_AndroidQ(10)分区存储完美适配之下载图片(文件)本地

前言

在上一篇中我们已经讲述了AndroidQ(10)分区存储适配,包括如何在私有目录创建文件及文件夹、公共目录下创建文件夹及文件、公有目录下读取文件、删除文件等重要功能。

本篇文章将以开发中的实际情况出发,讲述在AndroidQ中如何将图片下载到公共目录,简单来说就是如何将文件图片复制到另一个文件夹下。

触发场景:gilde已经将图片缓存在本地,获取图片所在的gilde缓存路径,将图片复制到自己指定的目录~

网络下载图片同理复制图片,只是传入不同类型的输入输出流而已~

相关系列文章

实际操作上手

必要参数:原文件地址、需要复制的本地uri

根据系统版本获取不同的文件路径

AndroidQ以下,可以使用File API操作

/**

* AndroidQ以下

* 创建图片缓存路径

*

* @param fileName 名称 包含文件类型

* @return 返回file类型

*/

public static File getImageFileCache (String fileName) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {

return null;

}

//创建项目图片公共缓存目录

File file = new File(Environment.getExternalStorageDirectory()+

File.separator +

Environment.DIRECTORY_PIC

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取U盘文件路径的代码如下: ```java // 获取U盘存储设备的根目录 File usbDrive = new File("/mnt/usb_storage/USB_DISK1"); // 列出U盘根目录下所有文件 File[] files = usbDrive.listFiles(); // 遍历文件列表,获取文件路径 for (File file : files) { String filePath = file.getAbsolutePath(); // 处理文件路径 } ``` 获取本地文件路径的代码如下: ```java // 获取本地存储根目录 File localDrive = Environment.getExternalStorageDirectory(); // 列出本地存储根目录下所有文件 File[] files = localDrive.listFiles(); // 遍历文件列表,获取文件路径 for (File file : files) { String filePath = file.getAbsolutePath(); // 处理文件路径 } ``` 需要注意的是,在 Android 11 ,对于本地存储目录的访问需要使用 `MediaStore` API,而不是直接访问文件系统。例如,获取 Downloads 目录下所有文件的代码如下: ```java // 查询下载文件 Uri uri = MediaStore.Downloads.EXTERNAL_CONTENT_URI; String[] projection = {MediaStore.Downloads._ID, MediaStore.Downloads.DISPLAY_NAME}; String selection = null; String[] selectionArgs = null; String sortOrder = null; Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder); // 遍历查询结果,获取文件路径 while (cursor.moveToNext()) { long id = cursor.getLong(cursor.getColumnIndex(MediaStore.Downloads._ID)); String fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Downloads.DISPLAY_NAME)); Uri contentUri = ContentUris.withAppendedId(MediaStore.Downloads.EXTERNAL_CONTENT_URI, id); String filePath = getFilePathFromUri(contentUri); // 处理文件路径 } cursor.close(); // 将 content:// 形式的 Uri 转换为文件路径 private String getFilePathFromUri(Uri uri) { String[] projection = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(uri, projection, null, null, null); if (cursor != null && cursor.moveToFirst()) { String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)); cursor.close(); return path; } return null; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值