Android讀寫文件

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

String res = "";
 
try{
 
InputStream in = getResources().openRawResource(R.raw.bbi);
 
//在\Test\res\raw\bbi.txt,
 
   intlength = in.available();      
 
   byte[] buffer = newbyte[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這裏有這樣的文件存在
 
   intlength = in.available();        
 
byte[] buffer = newbyte[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:/Y.txt /sdcard/


String fileName = "/sdcard/Y.txt";
 
//也可以用String fileName = "mnt/sdcard/Y.txt";
 
String res="";    
 
try{
 
FileInputStream fin = newFileInputStream(fileName);
 
//FileInputStream fin = openFileInput(fileName); 
 
//用這個就不行了,必須用FileInputStream
 
    intlength = fin.available();
 
    byte[] buffer = newbyte[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);
 
   
 
   publicvoidwriteFileData(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/下面
 
   publicvoidwriteFileData(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/下面
 
   publicString readFileData(String fileName){
 
        String res="";
 
        try{
 
         FileInputStream fin = openFileInput(fileName);
 
         intlength = fin.available();
 
         byte[] buffer = newbyte[length];
 
         fin.read(buffer);    
 
         res = EncodingUtils.getString(buffer, "UTF-8");
 
         fin.close();    
 
        }
 
        catch(Exception e){
 
         e.printStackTrace();
 
        }
 
        returnres;
 
    }  


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

//寫在/mnt/sdcard/目錄下面的文件
 
   publicvoidwriteFileSdcard(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/目錄下面的文件
 
   publicString readFileSdcard(String fileName){
 
        String res="";
 
        try{
 
         FileInputStream fin = newFileInputStream(fileName);
 
         intlength = fin.available();
 
         byte[] buffer = newbyte[length];
 
         fin.read(buffer);    
 
         res = EncodingUtils.getString(buffer, "UTF-8");
 
         fin.close();    
 
        }
 
        catch(Exception e){
 
         e.printStackTrace();
 
        }
 
        returnres;
 
   }


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