android里面讀取文件地方法基本和java中一樣,使用流來讀取,只是文件的存放有些規定而已。
android程序是有文件目錄為:/data/data/<包名>/files/ 例如:final String filename = "data/data/com.iotest/iotest.txt";
如果有定義錯誤就會出現錯誤。
下面是一個簡單的例子說明:
首先是我們的layout:
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:text="write text" android:id="@+id/write"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
</Button>
<Button android:text="read text" android:id="@+id/read"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
</Button>
<EditText android:text="text to insert into file
.."
android:id="@+id/EditText01" android:layout_width="fill_parent"
android:layout_height="fill_parent">
</EditText>
</LinearLayout>
最后生成的界面為如下:

然后使我們的activity:
package com.iotest;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.http.util.EncodingUtils;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class IoTest extends Activity implements OnClickListener{
/** Called when the activity is first created. */
final String filename = "data/data/com.iotest/iotest.txt";
final String tag="I/O";
EditText editText;
Button buttonw;
Button buttonr;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText = (EditText)findViewById(R.id.EditText01);
buttonr = (Button)findViewById(R.id.read);
buttonw = (Button)findViewById(R.id.write);
buttonr.setOnClickListener(this);
buttonw.setOnClickListener(this);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.read:
readTest();
break;
case R.id.write:
writeTest();
default:
break;
}
}
public void writeTest(){
try{
File file = new File(filename);
file.createNewFile();
Log.d(tag, "create flie!");
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));
bufferedOutputStream.write(editText.getText().toString().getBytes());
bufferedOutputStream.close();
}catch (Exception e) {
Log.e(tag, "error in write");
}
}
public void readTest(){
try {
File file = new File(filename);
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
byte[] data = new byte[(int) file.length()];
bufferedInputStream.read(data);
String str = EncodingUtils.getString(data, "utf-8");
bufferedInputStream.close();
editText.setText("讀取到的數據:"+str);
} catch (Exception e) {
// TODO Auto-generated catch block
Log.e(tag, "error in read");
}
}
}
也就是要注意下文件的路徑。
android程序是有文件目錄為:/data/data/<包名>/files/ 例如:final String filename = "data/data/com.iotest/iotest.txt";
如果有定義錯誤就會出現錯誤。
下面是一個簡單的例子說明:
首先是我們的layout:
main.xml:





















然后使我們的activity:












































































