Android:读取Assets文件和raw文件
一、读取Assets文件
Assets文件不能用R.xxx.XXX调用
1.新建assets目录,并在目录中建一个txt文件
新建assets
新建txt文件
2.读取该文件数据
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="zs.readassetsdemo.MainActivity">
<Button
android:id="@+id/read_txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="读取txt"/>
</LinearLayout>
MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "ReadAssets";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.read_txt).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
//通过输入流获取文件信息
InputStream is = getResources().getAssets().open("test.txt");
//把输入流转换为字符流
InputStreamReader isr = new InputStreamReader(is,"utf-8");
//把字符流包装为BufferReader
BufferedReader bfr = new BufferedReader(isr);
String in = "";
while ((in = bfr.readLine()) != null) {
Log.i(TAG,in);
}
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
效果如下:
点击读取txt
二、读取raw文件
1.在res目录下新建一个raw资源目录
2.在raw目录下建一个txt文件
3.读取文件数据,获取raw目录下的文件可以直接用R.raw.xxx
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="zs.readrawdemo.MainActivity">
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="读取txt">
</Button>
</android.support.constraint.ConstraintLayout>
MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
//获取raw目录下的文件可以直接用R.raw.xxx
InputStream is = getResources().openRawResource(R.raw.test);
InputStreamReader isr = new InputStreamReader(is,"utf-8");
BufferedReader br = new BufferedReader(isr);
String in = "";
while ((in = br.readLine())!= null) {
System.out.println(in);
}
}catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
效果如下:
点击读取TXT