1. 程式人生 > >Android讀寫檔案 獲取檔案並讀取寫入資料

Android讀寫檔案 獲取檔案並讀取寫入資料

一、       從 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;     }