Android访问系统下载目录

Android访问系统下载目录

在新版本Android中应当使用MediaStore访问共享媒体文件。共享媒体文件也包括系统下载目录中的文件。MediaStore以ContentProvider的方式提供了文件信息,得到文件信息后,可以直接打开文件访问数据。

Listing 1: 读取下载目录下的文件信息

Cursor cursor = /* Context. */ getContentResolver().query(
    MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL),
    null, 
    MediaStore.Files.FileColumns.DATA + " like ?",
    new String[]{"%.txt"},
    null);

  while (cursor.moveToNext()) {
    long id = cursor.getLong(cursor.getColumnIndexOrThrow(BaseColumns._ID));
    String fullFileName = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA));
    int fileSize = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.SIZE));
    String fileBaseName = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DISPLAY_NAME));
  }
  cursor.close();

MediaStore.MediaColumns.DATA列是文件的全名。有了全名,就可以使用File和InputStream可以访问文件中的数据。

Listing 2: 访问文件中的数据

// 方法一:使用File对象。
String fullFileName = "...";
InputStream inputStream1 = new FileInputStream(fullFileName);

// 方法二:使用ContentResolver。
Uri uri = Uri.parse(ContentResolver.SCHEME_FILE + "://" + fullFileName);
InputStream inputStream2 = /* Context. */ getContentResolver().openInputStream(uri);
Table 1: 部分预定义列
列名字数据类型含义
BaseColumns._IDlong文件编号
MediaStore.MediaColumns.SIZEint文件大小
MediaStore.MediaColumns.DATAString文件路径
MediaStore.MediaColumns.DISPLAY_NAMEString文件基础名
MediaStore.MediaColumns.RELATIVE_PATHString文件目录
MediaStore.MediaColumns.DATE_MODIFIEDlong文件修改时间
MediaStore.Files.FileColumns.MIME_TYPEString媒体类型

Listing 3: 新建文件

String filename = "...";
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DISPLAY_NAME, filename);
values.put(MediaStore.MediaColumns.MIME_TYPE, "application/octet-stream");
values.put(MediaStore.MediaColumns.RELATIVE_PATH, "subdir");
ContentResolver resolver = requireContext().getContentResolver();
Uri uri = resolver.insert(MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL), values);
OutputStream outputStream = resolver.openOutputStream(uri);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值