小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Android 私有文件夾 文件的寫入與讀取

 昵稱8022812 2011-10-30

Android 私有文件夾 文件的寫入與讀取
  在介紹如何在Android平臺(tái)下進(jìn)行文件的讀取之前,有必要了解Android平臺(tái)下的數(shù)據(jù)存儲(chǔ)規(guī)則。在其他的操作系統(tǒng)如Windows 平臺(tái)下,應(yīng)用程序可以自由地或者在特定的訪問權(quán)限基礎(chǔ)上訪問或修改其他應(yīng)用程序名下的文件等資源,而在Android平臺(tái)下,一個(gè)應(yīng)用程序中所有的數(shù)據(jù)都是私有的。
  當(dāng)應(yīng)用程序被安裝到系統(tǒng)中后,其所在的包會(huì)有一個(gè)文件夾用于存放自己的數(shù)據(jù),只有這個(gè)應(yīng)用程序才有對(duì)這個(gè)文件夾的寫入權(quán)限,這個(gè)私有的文件夾位于 Android系統(tǒng)的/data/data/<應(yīng)用程序包名>目錄下,其他的應(yīng)用程序都無法再這個(gè)文件夾中寫入數(shù)據(jù)。除了存放私有的數(shù)據(jù)文件夾外,應(yīng)用程序也具有SD卡的寫入權(quán)限。
  使用文件I/O 方法可以直接往手機(jī)中存儲(chǔ)數(shù)據(jù),默認(rèn)情況下這些文件不可以被其他的應(yīng)用程序訪問。Android平臺(tái)支持 java平臺(tái)下的 文件I/O操作, 主要使用FileInputStream 和 FileOutputStream 這兩個(gè)類來實(shí)現(xiàn)文件的存儲(chǔ)與讀取。獲取這兩個(gè)類對(duì)象的方式有兩種。
  一:第一種方式就是像Java平臺(tái)下的實(shí)現(xiàn)方式一樣通過構(gòu)造器直接創(chuàng)建,如果需要向打開的文件末尾寫入數(shù)據(jù),可以通過使用構(gòu)造器 FileOutputStream(File file, boolean append)將 append設(shè)置為true來實(shí)現(xiàn)。不過需要注意的是采用這種方式獲得FileOutputStream 對(duì)象時(shí)如果文件不存在或不可寫入時(shí),會(huì)拋出 FileNotFoundException 異常。
  二:第二種獲取 FileInputStream 和 FileOutputStream 對(duì)象的方式是調(diào)用 Context.openFileInput 和 Context.openFileOutput兩個(gè)方法來創(chuàng)建。除了這兩個(gè)方法外,Context對(duì)象還提供了其他幾個(gè)用于對(duì)文件操作的方法,如下所示
  Context對(duì)象中文操作的API及說明
  方法名 說明
  openFileInput(String filename) 打開應(yīng)用程序私有目錄下的的指定私有文件以讀入數(shù)據(jù),返回一個(gè)FileInputStream 對(duì)象
  openFileOutput 打開應(yīng)用程序私有目錄下的的指定私有文件以寫入數(shù)據(jù),返回一個(gè)FileOutputStream 對(duì)象,如果文件不存在就創(chuàng)建這個(gè)文件。
  fileList() 搜索應(yīng)用程序私有文件夾下的私有文件,返回所有文件名的String數(shù)組
  deleteFile(String fileName) 刪除指定文件名的文件,成功返回true,失敗返回false
  在使用openFileOutput方法打開文件以寫入數(shù)據(jù)時(shí),需要指定打開模式。默認(rèn)為零,即MODE_PRIVATE。不同的模式對(duì)應(yīng)的的含義如下:


  接上頁
  openFileOutput方法打開文件時(shí)的模式
  常量 含義
  MODE_PRIVATE 默認(rèn)模式,文件只可以被調(diào)用該方法的應(yīng)用程序訪問
  MODE_APPEND 如果文件已存在就向該文件的末尾繼續(xù)寫入數(shù)據(jù),而不是覆蓋原來的數(shù)據(jù)。
  MODE_WORLD_READABLE 賦予所有的應(yīng)用程序?qū)υ撐募x的權(quán)限。
  MODE_WORLD_WRITEABLE 賦予所有的應(yīng)用程序?qū)υ撐募懙臋?quán)限。
  下面通過一個(gè)小例子來說明Android平臺(tái)下的文件I/O 操作方式,主要功能是在應(yīng)用程序私有的數(shù)據(jù)文件夾下創(chuàng)建一個(gè)文件并讀取其中的數(shù)據(jù)顯示到屏幕的 TextView中,這個(gè)例子也比較簡單只有一個(gè)類。
  先看一下運(yùn)行后的效果吧。

  Activity01
  Java代碼
  package xiaohang.zhimeng;
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import org.apache.http.util.EncodingUtils;
  import android.app.Activity;
  import android.graphics.Color;
  import android.os.Bundle;
  import android.widget.TextView;
  public class Activity01 extends Activity{
  //常量,為編碼格式
  public static final String ENCODING = "UTF-8";
  //定義文件的名稱
  String fileName = "test.txt";
  //寫入和讀出的數(shù)據(jù)信息
  String message = "歡迎大家來我們?nèi)豪镉懻搯栴}";
  TextView textView;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  writeFileData(fileName, message);
  String result = readFileData(fileName);
  textView = (TextView)findViewById(R.id.tv);
  textView.setTextColor(Color.GREEN);
  textView.setTextSize(20.0f);
  textView.setText(result);
  }
  //向指定的文件中寫入指定的數(shù)據(jù)
  public void writeFileData(String filename, String message){


  接上頁
  try {
  FileOutputStream fout = openFileOutput(filename, MODE_PRIVATE);//獲得FileOutputStream
  //將要寫入的字符串轉(zhuǎn)換為byte數(shù)組
  byte[] bytes = message.getBytes();
  fout.write(bytes);//將byte數(shù)組寫入文件
  fout.close();//關(guān)閉文件輸出流
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  //打開指定文件,讀取其數(shù)據(jù),返回字符串對(duì)象
  public String readFileData(String fileName){
  String result="";
  try {
  FileInputStream fin = openFileInput(fileName);
  //獲取文件長度
  int lenght = fin.available();
  byte[] buffer = new byte[lenght];
  fin.read(buffer);
  //將byte數(shù)組轉(zhuǎn)換成指定格式的字符串
       result = EncodingUtils.getString(buffer, ENCODING);
  } catch (Exception e) {
  e.printStackTrace();
  }
  return result;
  }
  }
  package xiaohang.zhimeng;
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import org.apache.http.util.EncodingUtils;
  import android.app.Activity;
  import android.graphics.Color;
  import android.os.Bundle;
  import android.widget.TextView;
  public class Activity01 extends Activity{
  //常量,為編碼格式
  public static final String ENCODING = "UTF-8";
  //定義文件的名稱
  String fileName = "test.txt";
  //寫入和讀出的數(shù)據(jù)
信息
  String message = "歡迎大家來我們?nèi)豪镉懻搯栴}";
  TextView textView;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  writeFileData(fileName, message);
  String result = readFileData(fileName);
  textView = (TextView)findViewById(R.id.tv);


  接上頁
  textView.setTextColor(Color.GREEN);
  textView.setTextSize(20.0f);
  textView.setText(result);
  }
  //向指定的文件中寫入指定的數(shù)據(jù)
  public void writeFileData(String filename, String message){
  try {
  FileOutputStream fout = openFileOutput(filename, MODE_PRIVATE);//獲得FileOutputStream
  //將要寫入的字符串轉(zhuǎn)換為byte數(shù)組
  byte[] bytes = message.getBytes();
  fout.write(bytes);//將byte數(shù)組寫入文件
  fout.close();//關(guān)閉文件輸出流
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  //打開指定文件,讀取其數(shù)據(jù),返回字符串對(duì)象
  public String readFileData(String fileName){
  String result="";
  try {
  FileInputStream fin = openFileInput(fileName);
  //獲取文件長度
  int lenght = fin.available();
  byte[] buffer = new byte[lenght];
  fin.read(buffer);
  //將byte數(shù)組轉(zhuǎn)換成指定格式的字符串
  result = EncodingUtils.getString(buffer, ENCODING);
  } catch (Exception e) {
  e.printStackTrace();
  }
  return result;
  }
  }

本篇文章來源于 黑軟基地-中國最大的黑客軟件安全教程下載站!(手機(jī)資訊) 原文鏈接:http://www./mobiwen/html/Mobile_249951.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多