Android中存储大量数据时,可采用本地文件的方式.Android操作文件的方式同样适用java的io操作来完成.Android的文件可分为普通文件、静态文件和SDCard文件。

  • 普通文件是指Android程序通过文件操作,存放在系统中的文件,这种类型的文件可以通过以下的方法来操作:

1.写文件

FileOutputStream out = openFileOutput("info1.txt", MODE_PRIVATE);String content = contentEt.getText().toString();byte[] bytes = content.getBytes();out.write(bytes);out.close();
首先声明一个文件输出流,用来写入数据,可以使用android系统提供的openFileOutput来获取该输出流,获取输出流时需指明输出流对应的文件名称,以及该文件的使用模式.使用模式分为MODE_APPEND即向文件尾写入数据、MODE_PRIVATE即仅打开文件可写入数据、MODE_WORLD_READABLE所有程序均可读该文件数据、MODE_WORLD_WRITABLE即所有程序均可写入数据。写入数据的使用java的IO操作,在此不进行介绍了.

2.读文件

FileInputStream in = openFileInput("info1.txt");byte[] buffer = new byte[1024];in.read(buffer);String str = EncodingUtils.getString(buffer, "UTF-8");this.contentEt.setText(str.toString());in.close();

读文件的方法与写文件的方法类似,首先调用系统提供的openFileInput方法获取文件的输入流,接着使用IO读出数据,读出数据时需注意数据的编码方式.

  • 静态文件或者成嵌入式文件,该文件为程序的一部分,在编写时放入程序的资源目录中,程序编译时会将改文件,作为程序的一部分一起编译,该文件一般存放在res/raw文件夹下,文件的名称可以通过R.raw.fileName来访问。该类型文件的读取方式如下:InputStream in = getResources().openRawResource(R.raw.test);
  • InputStream in = getResources().openRawResource(R.raw.test);byte[] buffer = new byte[1024];try {in.read(buffer);String content = EncodingUtils.getString(buffer, "UTF-8");contentEt.setText(content);in.close();} catch (IOException e) {e.printStackTrace();}
    文件的读取方式,与普通文件有点区别,首先调用getResource()方法获取程序资源,然后通过openRawResource()方法打开指定的嵌入文件资源,接着文件的读取工作与上类似,不再赘述。
  • SDCard文件是指存放在SD卡上的文件,进行SD卡操作前,请确保已安装SD卡且保证已配置允许对SD卡进行操作.对SD开的权限配置在文件AndroidManifest.xml中,需写入一下代码:
         
    在程序中操作SD卡前,也需判断是否已安装SD卡,判断的方法如下:
    if(Environment.getExternalStorageDirectory().equals(Environment.MEDIA_MOUNTED)){……}
    使用Environment的getExteralStorageDirectory()获取的值与Environment的MEDIA_MOUNTED进行比较,如果相同,则说明支持SD卡操作,否则不能进行SD开操作。向SD中写入文件数据的代码如下:
    File sdcDir = Environment.getExternalStorageDirectory();File file = new File(sdcDir,"info.txt");try {FileOutputStream out = new FileOutputStream(file);String content = contentEt.getText().toString();out.write(content.getBytes());out.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
    首先获取SD卡的目录文件,接着获取SD卡中指定的文件,获取文件后,就可以通过java的IO操作,对其进行读写了,读数据的方法与上类似,代码如下:
    File sdcDir = Environment.getExternalStorageDirectory();File file = new File(sdcDir,"info.txt");FileInputStream in;try {in = new FileInputStream(file);byte[] buffer = new byte[1024];in.read(buffer);String str = EncodingUtils.getString(buffer, "UTF-8");this.contentEt.setText(str.toString());in.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. NPM 和webpack 的基础使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. Android(安卓)-SQLite数据库存储
  6. Android(安卓)自动编译、打包生成apk文件 、命令行方式
  7. Android(安卓)Input子系统-含实例源码
  8. android直接用v4l2采集图片数据
  9. Android彩信存储

随机推荐

  1. 专辑: 善知堂android 4.0.3 就业视频教程
  2. AppCompat v21 — Android 5.0之前版本设
  3. Android传感器应用
  4. Android(安卓)创建桌面快捷方式
  5. Android悬浮窗权限适配
  6. xmlns:android="http://schemas.android.
  7. android中关于class Build以及如何修改an
  8. android studio更新arr无效,API找不到
  9. Android TabHost两种实现方式
  10. No toolchains found in the NDK toolcha