当前位置: 移动技术网 > 移动技术>移动开发>Android > android文件操作——读取assets和raw文件下的内容

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

2019年07月24日  | 移动技术网移动技术  | 我要评论

来自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的文件夹)

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

3.实现的效果:

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();
    }
  }

}

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网