欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android文件操作——读取assets和raw文件下的内容

程序员文章站 2024-03-04 15:19:23
来自resources和assets 中的文件只可以读取而不能进行写的操作。 assets文件夹里面的文件都是保持原始的文件格式,需要用assetmanager以字节...

来自resources和assets 中的文件只可以读取而不能进行写的操作。

assets文件夹里面的文件都是保持原始的文件格式,需要用assetmanager以字节流的形式读取文件。

1. 先在activity里面调用getassets() 来获取assetmanager引用。

2. 再用assetmanager的open(string filename, int accessmode) 方法则指定读取的文件以及访问模式就能得到输入流inputstream。

3. 然后就是用已经open file 的inputstream读取文件,读取完成后记得inputstream.close() 。

4.调用assetmanager.close() 关闭assetmanager。

实现步骤:
1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹)

android文件操作——读取assets和raw文件下的内容android文件操作——读取assets和raw文件下的内容

2.创建两个txt文件,复制到asset和raw文件夹中:

android文件操作——读取assets和raw文件下的内容

3.实现的效果:

android文件操作——读取assets和raw文件下的内容

4.实现代码:

(1)布局文件:

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  tools:context="base.readassetsfile.mainactivity">
  <button
    android:textsize="20sp"
    android:text="@string/aasets_txt"
    android:id="@+id/readfile"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
  <button
    android:textsize="20sp"
    android:text="@string/raw"
    android:id="@+id/readrawfile"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
</linearlayout>

(2)具体实现:

package base.readassetsfile;

import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.util.log;
import android.view.view;
import android.widget.edittext;

import java.io.bufferedreader;
import java.io.ioexception;
import java.io.inputstream;
import java.io.inputstreamreader;
import java.io.outputstream;
import java.io.unsupportedencodingexception;

public class mainactivity extends appcompatactivity implements view.onclicklistener {
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
    findviewbyid(r.id.readfile).setonclicklistener(this);
    findviewbyid(r.id.readrawfile).setonclicklistener(this);
  }
  @override
  public void onclick(view v) {
    switch (v.getid()){
      case r.id.readfile:
        readasset();
        break;
      case r.id.readrawfile:
        readraw();
        break;
    }
  }
  public void readasset(){
    try {
      //获取文件中的字节
      inputstream inputstream=getresources().getassets().open("test.txt");
      //将字节转换为字符
      inputstreamreader isreader=new inputstreamreader(inputstream,"utf-8");
      //使用bufferreader去读取内容
      bufferedreader reader=new bufferedreader(isreader);
      string out="";
      while((out=reader.readline())!=null){
        log.d("读取到的文件信息:",out);
      }
    } catch (ioexception e) {
      e.printstacktrace();
    }
  }
  public void readraw(){
    try {
      //获取文件中的内容
      inputstream inputstream=getresources().openrawresource(r.raw.test);
      //将文件中的字节转换为字符
      inputstreamreader isreader=new inputstreamreader(inputstream,"utf-8");
      //使用bufferreader去读取字符
      bufferedreader reader=new bufferedreader(isreader);
      string out="";
      try {
        while((out=reader.readline())!=null){
          log.d("从raw文件夹中读取到的数据:",out);
        }
      } catch (ioexception e) {
        e.printstacktrace();
      }
    } catch (unsupportedencodingexception e) {
      e.printstacktrace();
    }
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。