文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android内部存储与外部存储实例代码分析

2023-07-05 14:14

关注

今天小编给大家分享一下Android内部存储与外部存储实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

什么是内部存储和外部存储

内部存储与外部存储的存储介质:

内部存储的介质:RAM(内存) + 内部ROM

外部存储的介质:外部ROM + SDCard(TS卡等等)。

内部存储与外部存储的存储特点:

一般来说,以/data开头的是内部存储。且内部存储不需要任何权限。

例如:

内部存储需要关注的文件夹:

app文件夹(未root无法打开):存放着所有app的apk文件夹

data文件夹:内部都是app的包名,存储着应用程序相关的数据,例如 data/data/包名/(shared_prefs、database、files、cache)

Android SDK提供了几个常见的内部存储文件的权限

一般来说,外部存储会放在storage文件夹下或者mnt文件夹下。且需要安卓的权限。

例如:

私有外部存储

以及共有外部存储

/storage/emulated/0 Environment.getExternalStorageDirectory()

/storage/emulated/0/Pictures

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)

外部存储需要注意的文件夹即外部存储的分类:

storage中有一个sdcard文件夹,sdcard下面可以分两类存储:

外部共有存储(共有目录):里面常见的有Pictures、Download等文件夹.

外部私有存储(私有目录):系统中的数据。

Android内部存储与外部存储实例代码分析

内部存储与外部存储的文件夹:

Android内部存储与外部存储实例代码分析

内部存储与外部存储,释放内存方面的总结:

内部存储:随应用卸载被删除。外部存储:

公有目录:存放一些下载的视频文件等,比如还有movies,fictures,music等公有的一些文件目录。

私有目录:随应用卸载被删除。

内部存储与外部存储的代码示例

内部存储

// 存 FileOutputStream fos = null;                try {                    //第一个参数:文件名                    //第二个参数:表示文件输出的类型 这里选择Context.MODE_PRIVATE每次生成相同的文件名,则覆盖原有的文件                    fos = openFileOutput('test', Context.MODE_PRIVATE);                    String nameAndPassword = username + "." + password;                    byte[] bytes = nameAndPassword.getBytes();                    fos.write(bytes);                } catch (Exception e) {                    e.printStackTrace();                } finally {                    if (fos != null) {                        try {                            fos.close();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }// 取FileInputStream fis = null;                try {                    fis = openFileInput(fileName);                    //fis.available() 判断文件有多少个字节                    byte[] bytes = new byte[fis.available()];                    while (fis.read(bytes) != -1) {                        String message = new String(bytes);                        String[] split = message.split("\\.");                        tv_message.setText("用户名:" + split[0] + "\n" + "密码:" + split[1]);                    }                } catch (Exception e) {                    e.printStackTrace();                }

外部存储

// 获取外部存储地址的位置并创建文件:new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)// 存OutputStream outputStream = null;                try {                        outputStream = new FileOutputStream(new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), 'test2'));                        String nameAndPassword = username + "." + password;                        byte[] bytes = nameAndPassword.getBytes();                        outputStream.write(bytes);                } catch (Exception e) {                    e.printStackTrace();                } finally {                    if (outputStream != null) {                        try {                            outputStream.close();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }// 取 FileInputStream fis = null;                try {                    //第一个参数:文件目录 第二个参数:文件名                    //getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)对应的路径为:                    // /storage/emulated/0/Android/data/com.example.customviewproject/files/Download                    File file = new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), fileName);                        fis = new FileInputStream(file);                        //判断当前文件的字节个数                        byte[] bytes = new byte[fis.available()];                        while (fis.read(bytes) != -1) {                            String message = new String(bytes);                            String[] split = message.split("\\.");                            tv_message.setText("用户名:" + split[0] + "\n" + "密码:" + split[1]);                        }                } catch (Exception e) {                    e.printStackTrace();                } finally {                    if (fis != null) {                        try {                            fis.close();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }

以上就是“Android内部存储与外部存储实例代码分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯