Android读写文件

来源:互联网 发布:入骨相思知不知txt微盘 编辑:程序博客网 时间:2024/04/30 12:28

 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,

  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把本地计算机上的文件copysdcard上去,adb.exe push e:/Y.txt/sdcard/,不可以用adb.exe pushe:\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 =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查看fileexplorer是可以看到仿真器文件存放目录的结构的

  String fileName ="TEST.txt";

  String message ="FFFFFFF11111FFFFF";

writeFileData(fileName,message);

  

  publicvoidwriteFileData(String fileName,Stringmessage){ 

     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,Stringmessage){ 

     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(StringfileName){ 

      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(StringfileName,String message){ 

     try{ 

      //FileOutputStreamfout =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(StringfileName){

      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; 

  }

 

注:openFileOutput是在raw里编译过的,FileOutputStream是任何文件都可以