android I/o 例子



http://www.blogjava.net/freeman1984/archive/2009/11/08/android-io.html 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”);         }            }    }

也就是要注意下文件的路径。