android文件操作——读取assets和raw文件下的内容
程序员文章站
2024-03-03 16:19:16
来自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的文件夹)
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(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。