Data Storage(数据存储)之内部储存(Internal Storage)

读取手机内部储存,Activity 中调用 openFileOutput(file_name, mode)方法返回File 对象;

file_name: 文件名

mode: 操作文件的类型

Context.MODE_PRIVATE:代表文件是私有的,如果重新调用,则原来的数据会被覆盖
Context.MODE_APPEND:先判断文件是否存在,如果存在,则在在原来的数据后面追加内容 />
Context.MODE_WORLD_READABLE:其他应用程序由权限读取
Context.MODE_WORLD_WRITEABLE:其他应用程序由权限写入

如果当其他程序同时具有读写功能,则应该这样写:

openFileOutput(FILE_NAME, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

下面是个小Demo:

public void writeFile(View view) {try {FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE);fos.write(string_01.getBytes());fos.close();Toast.makeText(InternalStorageActivity.this, "Saved...", Toast.LENGTH_LONG).show();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}

读取或者写入文件,默认目录是:/data/data/<package-name>/files/ 文件夹下
我们也可以使用Activity 提供的getCacheDir()getFilesDir() 方法:获取/data/data/<package-name>/ 下的 /cache/files

读取文件则调用openFileInput(FILE_NAME) 方法

public void readFile(View view) {try {FileInputStream fis = openFileInput(FILE_NAME);BufferedReader br = new BufferedReader(new InputStreamReader(fis));String line = null;while ((line = br.readLine()) != null) {String str = new String(line);Log.i(TAG, str);}Toast.makeText(InternalStorageActivity.this, "Read...", Toast.LENGTH_LONG).show();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}

操作外部储存(内存卡)

由于Android 系统内存大小的局限,比如我们储存文件就要把它放在外部存储中,在操作之前,我们要在AndroidManifest.xml 中设置读写操作:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 、、、、
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 

操作外部储存(内存卡)

由于Android 系统内存大小的局限,比如我们储存文件就要把它放在外部存储中,在操作之前,我们要在AndroidManifest.xml 中设置
读写权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

创建和删除权限

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 

Android 中的Environment 类对外部存储卡的操作,
getExternalStorageState() 方法,判断外部储存卡的状态,如果为MEDIA_MOUNTED 则表示可操作
getExternalStorageDirectory() 方法,获取外部储存的目录,可以对其目录进行操作

/***  读取外部储存卡 *  在外部储存卡上创建一个demo.tet 文件,并写入字符*  为了沿着文件已经写入外部储存,所有读取创建的文件*/public void getExternalStorage(View view) throws IOException {// Android 中的Environment 类对外部存储卡的操作,// getExternalStorageState() 方法,判断外部储存卡的状态,如果为MEDIA_MOUNTED 则表示可操作//getExternalStorageDirectory() 方法,获取外部储存的目录,可以对其目录进行操作String state =  Environment.getExternalStorageState();if (Environment.MEDIA_MOUNTED.equals(state)) {File sdcardDir = Environment.getExternalStorageDirectory();File saveFile = new File(sdcardDir, "demo.text");FileOutputStream fos = new FileOutputStream(saveFile);fos.write("text".getBytes());fos.close();Toast.makeText(InternalStorageActivity.this, "getExternalStorage", Toast.LENGTH_LONG).show();File[] fileDir = sdcardDir.listFiles();for (File file : fileDir) {String fileName = file.toString();Log.i(TAG, "FileName: " + fileName);}FileInputStream fis = new FileInputStream(saveFile);byte[] buffer = new byte[1024];int len = 0;String value = null;while ((len = fis.read(buffer)) != -1) {value = new String(buffer, 0, len);}fis.close();Log.i(TAG, "getValue = " + value);}
}

转载于:https://www.cnblogs.com/Tikitoo/p/android-data-internal-storage.html

Data Storage(数据存储)之内部储存(Internal Storage)相关推荐

  1. [Redux/Mobx] redux的数据存储和本地储存有什么区别?

    [Redux/Mobx] redux的数据存储和本地储存有什么区别? Redux存储的数据本质上都是JS变量,都是在内存中的,页面刷新就会消失 本质存储是像localStorage Cookie In ...

  2. Android数据存储(内部,外部,SharedPreferences,SQlite)

    数据的存储位置 内部存储:data/data/对应包名/files/文件名 外部存储:/storage/emulated/0/对应包名/文件 内部存储的读写 写 String file="d ...

  3. 微信小程序:globalData和Storage数据存储的错误示例

    前言 在小程序登录是,将返回的用户数据,存储在globalData中和storage中. // 存储的数据是一个对象 wx.setStorageSync('userAuthData', user.da ...

  4. 数据存储——手机内部文件存储

    一.特点 1.存储的是任意类型的文件 2.使用IO输入输出流操作文件 3.存放的目录:/data/data/包名/files/ 4.可以设置不被其他应用操作 5.应用卸载之后,数据同时被删除 二.AP ...

  5. Android开发7:简单的数据存储(使用SharedPreferences)和文件操作

    前言 啦啦啦~大家好,又见面啦~ 本篇博文讲和大家一起完成一个需要注册.登录的备忘录的,一起学习 SharedPreferences 的基本使用,学习 Android 中常见的文件操作方法,复习 An ...

  6. [免费专栏] Android安全之数据存储与数据安全「详解」

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

  7. android界面数据存储,Android应用开发基础之数据存储和界面展现(二)

    Android应用开发基础之数据存储和界面展现(二) 常见布局 相对布局 RelativeLayout 组件默认左对齐.顶部对齐 设置组件在指定组件的右边 android:layout_toRight ...

  8. Android数据存储(1):SharedPreferences

    Android系统提供了5种方式用来存储应用数据(application data),它们分别是SharedPreferences(共享参数),Internal Storage(内部存储),Exter ...

  9. Android数据存储之文件存储

    -- 大家都知道,数据和算法是一个应用程序的核心.所以,学好数据存储是非常有必要的. --Android数据的存储有多种方式,比如ContentProvider(内容提供者).SQLite(嵌入式数据 ...

最新文章

  1. python监控进程并实现掉线重启
  2. [PTA]L2-001 紧急救援 (25 分)
  3. 数据库 实体间的3种关系
  4. oracle有sysdata,Oracle基础
  5. 曝光:一位来自微软公司的粉丝 写给我的信
  6. mysql中文乱码解决_Stata 中文乱码顽疾解决方法
  7. spring-security过程分析
  8. 「leetcode」131.分割回文串【回溯算法】详解!
  9. 对voc2007数据集进行person的单类数据抽取
  10. logback日志模板
  11. word使用上角标超链接到引用的参考论文
  12. 页高速缓存(Page Cache)
  13. element表格样式修改
  14. 设置电脑 保护视力 还有桌面默认颜色
  15. 3D游戏编程作业10
  16. 持安科技孙维伯:实战零信任最佳实践
  17. 不错的U3D第一人称射击类游戏教程
  18. MySQL数据库存储过程讲解与实例
  19. C语言九条语句经典例题,一起温故而知新!!!
  20. 全国高中生计算机联赛,全国中学生五大学科竞赛

热门文章

  1. java jdbc数据库五种连接方式
  2. ugly number
  3. ArcSDE数据库、文件地理数据库和个人地理数据库的区别
  4. STL算法学习[转]
  5. 动态规划(最长递增子序列)---最长摆动子序列
  6. Python虚拟环境virtualenv的安装与使用详解(转)
  7. 连号区间数(2013年第四届c/c++ b组第10题)
  8. BZOJ2209: [Jsoi2011]括号序列
  9. Hadoop HBase概念学习系列之HBase的Shell(步骤非常清晰)(二十四)
  10. 在sitecopy中设置不支持passive模式的ftp服务器