Android保存图片到data/data/***.**.**/files

GA666666 2021-04-25 PM 74℃ 0条

今天在重拾软件开发课程设计的时候发现当年写的App已经不能使用了,还好保存了源码。
打开以后发现当时写的服务器地址已经到期,而且当时没有把服务器地址抽取出来导致,要改的地方很多。
大致能使用后,聊天界面的头像加载不了,当时的实现方式是把用户的头像图片网络地址和用户的id存到SharedPreferences里面,加载MainActivity的时候加载聊天好友的信息,先通过获取的网络图片查询图片地址,能查到说明有这个文件,没有的话就插入网址和id并且进行存储,当时对android不算了解,傻了吧唧获取权限在内存里创建了文件夹存储,因为android版本更新太快每个本版本获取权限的方式和地址都不一样,导致创建不了文件夹

偶然打开data/data/edu.bgu.diary目录查看SharedPreferences文件,发现了files文件,准备把文件存储在这里

查了一下网上的方法,一部分能用
先来来看一下目录结构:请输入图片描述
向data/data/edu.bgu.diary/files存储文件,并不需要写相对地址什么的,String url ="1.png",就会向files里写入

String str1 = msg.getSend_user_id() + ".png";
FileOutputStream localFileOutputStream1 = openFileOutput(str1, 0);
//bitmap为获取的图像
bitmap.CompressFormat localCompressFormat = Bitmap.CompressFormat.PNG;
response.compress(localCompressFormat, 100, localFileOutputStream1);
localFileOutputStream1.close();

这里还是很顺利
接下来是读取环节,根据网上的方法读不到files下的文件
所以稍加修改后可以读取

FileInputStream fis = new FileInputStream(context.getFilesDir().getAbsolutePath() + "/" +imagePath);
Bitmap bitmap  = BitmapFactory.decodeStream(fis);

这里:context.getFilesDir()可以获取files文件的位置,当然还有其他方法:请输入图片描述


一、 files

  1. Context.getFilesDir(),该方法返回/data/data/youPackageName/files的File对象。
  2. Context.openFileInput()与Context.openFileOutput(),只能读取和写入files下的文件,返回的是FileInputStream和FileOutputStream对象。www.2cto.com
  3. Context.fileList(),返回files下所有的文件名,返回的是String[]对象。
  4. Context.deleteFile(String),删除files下指定名称的文件。

二、cache

  1. Context.getCacheDir(),该方法返回/data/data/youPackageName/cache的File对象。

三、custom dir
getDir(String name, int mode),返回/data/data/youPackageName/下的指定名称的文件夹File对象,如果该文件夹不存在则用指定名称创建一个新的文件夹。

标签: none

非特殊说明,本博所有文章均为博主原创。

评论啦~