转 Android - 文件操作
一、资源文件的读取:
1) 从resource的raw中读取文件数据:
String res = ""; try{ //得到资源中的Raw数据流 InputStream in = getResources().openRawResource(R.raw.test); //得到数据的大小 int length = in.available(); byte [] buffer = new byte[length]; //读取数据 in.read(buffer); //依test.txt的编码类型选择合适的编码,如果不调整会乱码 res = EncodingUtils.getString(buffer, "BIG5"); //关闭 in.close(); }catch(Exception e){ e.printStackTrace(); }
2) 从resource的asset中读取文件数据
String fileName = "test.txt"; //文件名字 String res=""; try{ //得到资源中的asset数据流 InputStream in = getResources().getAssets().open(fileName); int length = in.available(); byte [] buffer = new byte[length]; in.read(buffer); res = EncodingUtils.getString(buffer, "UTF-8"); }catch(Exception e){ e.printStackTrace(); }
二、读写/data/data/<应用程序名>目录上的文件:
//写数据 public void writeFile(String fileName,String writestr{ try{ FileOutputStream fout =openFileOutput(fileName, MODE_PRIVATE); byte [] bytes = writestr.getBytes(); fout.write(bytes); fout.close(); } catch(Exception e){ e.printStackTrace(); } } //读数据 public String readFile(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; }
三、读写SD卡中的文件。也就是/mnt/sdcard/目录下面的文件 :
//写数据到SD中的文件 public void writeFileSdcardFile(String fileName,String write_str){ try{ FileOutputStream fout = new FileOutputStream(fileName); byte [] bytes = write_str.getBytes(); fout.write(bytes); fout.close(); } catch(Exception e){ e.printStackTrace(); } } //读SD中的文件 public String readFileSdcardFile(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; }