瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          android I/o 例子說明

          Posted on 2009-11-08 13:43 瘋狂 閱讀(1575) 評論(4)  編輯  收藏 所屬分類: android
               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");
                  }
                  
              }
              
          }
          也就是要注意下文件的路徑。

          評論

          # re: android I/o 例子說明[未登錄]  回復  更多評論   

          2010-07-28 16:40 by lu
          我想問一下,你的這個例子自己能運行出來嗎?我的為什么運行出現錯誤呢?

          # re: android I/o 例子說明  回復  更多評論   

          2010-07-29 09:04 by @joe
          當然能運行起來,所有的例子都是先運行起來,然后才寫的,不過這都是09年的寫的文章,現在已經沒心事繼續研究android了,能什么時候看見android的光明未來時再繼續研究。

          # re: android I/o 例子說明  回復  更多評論   

          2010-07-29 14:48 by luper
          謝謝你啦,我運行成功了,不過在途中出現了一點點的錯誤,這個例子可以用來說明android datastorage 的文件存儲的方式嗎?

          # re: android I/o 例子說明  回復  更多評論   

          2010-07-30 09:14 by @joe
          可以這么說但不排除其他方法,請繼續努力!
          主站蜘蛛池模板: 高州市| 济源市| 禄劝| 陇南市| 永年县| 固原市| 西峡县| 壶关县| 金溪县| 新和县| 崇州市| 大理市| 新乐市| 孝昌县| 龙川县| 浪卡子县| 鄂伦春自治旗| 海兴县| 东丽区| 宁安市| 泰宁县| 凌海市| 定兴县| 环江| 萨嘎县| 仁寿县| 泉州市| 页游| 会东县| 胶南市| 黔东| 土默特左旗| 凭祥市| 宜章县| 万荣县| 惠东县| 普格县| 察雅县| 彩票| 琼中| 朔州市|