android讀寫各類文件方法(參考)

android讀寫文件

本文轉自:http://blog.sina.com.cn/s/blog_4d25c9870100qpax.html

 
一、      從resource中的raw文件夾中獲取文件並讀取數據(資源文件只能讀不能寫)

String res = "";

try{

InputStream in = getResources().openRawResource(R.raw.bbi);

//在\Test\res\raw\bbi.txt,

  int length = in.available();      

  byte [] buffer = new byte[length];       

  in.read(buffer);        

  //res = EncodingUtils.getString(buffer, "UTF-8");

  //res = EncodingUtils.getString(buffer, "UNICODE");

  res = EncodingUtils.getString(buffer, "BIG5");

  //依bbi.txt的編碼類型選擇合適的編碼,如果不調整會亂碼

  in.close();           

  }catch(Exception e){

     e.printStackTrace();        

  }

myTextView.setText(res);//把得到的內容顯示在TextView上

 
二、      從asset中獲取文件並讀取數據(資源文件只能讀不能寫)

String fileName = "yan.txt"; //文件名字

String res="";

try{

  InputStream in = getResources().getAssets().open(fileName);

  // \Test\assets\yan.txt這裏有這樣的文件存在

  int length = in.available();        

byte [] buffer = new byte[length];       

in.read(buffer);           

res = EncodingUtils.getString(buffer, "UTF-8");    

}catch(Exception e){

     e.printStackTrace();        

  }

 
三、      從sdcard中去讀文件,首先要把文件通過\android-sdk-windows\tools\adb.exe把本地計算機上的文件copy到sdcard上去,adb.exe push e:/Y.txt /sdcard/, 不可以用adb.exe push e:\Y.txt \sdcard\ 同樣: 把仿真器上的文件copy到本地計算機上用: adb pull ./data/data/com.tt/files/Test.txt e:/

 

String fileName = "/sdcard/Y.txt";

//也可以用String fileName = "mnt/sdcard/Y.txt";

String res="";    

try{

FileInputStream fin = new FileInputStream(fileName);

//FileInputStream fin = openFileInput(fileName); 

//用這個就不行了,必須用FileInputStream

   int length = fin.available();

   byte [] buffer = new byte[length];

    fin.read(buffer);    

    res = EncodingUtils.getString(buffer, "UTF-8");

    fin.close();    

    }catch(Exception e){

         e.printStackTrace();

}

myTextView.setText(res);

 
四、      寫文件, 一般寫在\data\data\com.test\files\裏面,打開DDMS查看file explorer是可以看到仿真器文件存放目錄的結構的

  String fileName = "TEST.txt";

  String message = "FFFFFFF11111FFFFF" ;

writeFileData(fileName, message);

 

  public voidwriteFileData(String fileName,String message){

     try{

       FileOutputStream fout =openFileOutput(fileName, MODE_PRIVATE);

      byte [] bytes = message.getBytes();

       fout.write(bytes);

        fout.close();

       }

     catch(Exception e){

       e.printStackTrace();

      }

  }   

 
五、      寫, 讀data/data/目錄(相當AP工作目錄)上的文件,用openFileOutput

  //寫文件在./data/data/com.tt/files/下面

  public voidwriteFileData(String fileName,String message){

     try{

       FileOutputStream fout =openFileOutput(fileName, MODE_PRIVATE);

      byte [] bytes = message.getBytes();

       fout.write(bytes);

        fout.close();

       }

     catch(Exception e){

       e.printStackTrace();

      }

  }

//-------------------------------------------------------

//讀文件在./data/data/com.tt/files/下面

  public String readFileData(String fileName){

       String res="";

      try{

        FileInputStream fin = openFileInput(fileName);

       int length = fin.available();

       byte [] buffer = new byte[length];

        fin.read(buffer);    

        res = EncodingUtils.getString(buffer, "UTF-8");

        fin.close();    

       }

      catch(Exception e){

        e.printStackTrace();

       }

      return res;

   }  


六、      寫, 讀sdcard目錄上的文件,要用FileOutputStream, 不能用openFileOutput

 

    //寫在/mnt/sdcard/目錄下面的文件

  public voidwriteFileSdcard(String fileName,String message){

     try{

      //FileOutputStream fout = openFileOutput(fileName, MODE_PRIVATE);

      FileOutputStream fout = newFileOutputStream(fileName);

      byte [] bytes = message.getBytes();

       fout.write(bytes);

        fout.close();

       }

     catch(Exception e){

       e.printStackTrace();

      }

  }

 

  //讀在/mnt/sdcard/目錄下面的文件

  public String readFileSdcard(String fileName){

       String res="";

      try{

        FileInputStream fin = new FileInputStream(fileName);

       int length = fin.available();

       byte [] buffer = new byte[length];

        fin.read(buffer);    

        res = EncodingUtils.getString(buffer, "UTF-8");

        fin.close();    

       }

      catch(Exception e){

        e.printStackTrace();

       }

      return res;

  }

 

注: openFileOutput是在raw裏編譯過的,FileOutputStream是任何文件都可以

 

發佈了74 篇原創文章 · 獲贊 9 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章