Android 儲存學習之在內部儲存中讀寫檔案

來源:互聯網
上載者:User

Android 儲存學習之在內部儲存中讀寫檔案

大家都知道,在實際工作中開發,進場需要將一個檔案寫入到手機的儲存中。既然說到手機的儲存空間,那就先說說手機的儲存空間分類:

1: 內部儲存空間

RAM記憶體: 也就是手機的啟動並執行記憶體,相當於電腦的記憶體

ROM記憶體: 也就是手機的儲存記憶體,相當於電腦的硬碟

2: 外部儲存空間

也就是可插拔的SD卡,相當於電腦的移動硬碟,隨身碟等。

 

既然手機儲存分為兩類,那我們先看看如何在手機的內部儲存中讀寫檔案。

那我們引入一個實際中很常見的例子:

一般帶登入介面的,都需要將使用者的資訊儲存到本地。我們就用上面的例子示範,將使用者輸入的資訊儲存到手機的內部儲存。

布局檔案代碼如下:

                                            

 

 

當我們點擊按下確定按鈕後,會將我們的使用者資訊,寫到手機的內部儲存中,也就是該應用所在的包名下

 

 public void login(View v)    {    String name = ed_nam.getText().toString();        String passwd = ed_passwd.getText().toString();        //判斷使用者名稱或者密碼是否輸入    if((name.equals()) || (passwd.equals()))    {    Toast.makeText(this, 使用者名稱或密碼不可為空, Toast.LENGTH_SHORT).show();    }    else     {    //如果選中自動登入,我們就需要儲存使用者名稱和密碼    if(cb.isChecked())    {    //建立一個檔案,使用者儲存使用者名稱和密碼    File file = new File(data/data/com.demo.storage/info.txt);    try {    FileOutputStream fos = new FileOutputStream(file);//寫入使用者名稱和密碼,以name##passwd的格式寫入fos.write((name + ## + passwd).getBytes());//關閉輸出資料流fos.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}    }        Toast.makeText(this, 登入成功, Toast.LENGTH_SHORT).show();}    }

我所指定的檔案儲存體路徑就是包名下的info.txt檔案:

 

我們匯出可以看下:


 

到這裡的話,我們的往手機的內部儲存中寫已經完成。接下是往手機的內部儲存中讀。

那我們就這樣做,當如果只要點擊進入此Actiivty就顯示出用於以前儲存的用於和密碼

 

public void readInfo(){File file = new File(data/data/com.demo.storage/info.txt);//如果檔案存在,則讀取if(file.exists()){try {FileInputStream fin = new FileInputStream(file);//把位元組流轉化為字元流BufferedReader buffer = new BufferedReader(new InputStreamReader(fin));//讀取檔案中的使用者名稱和密碼String text = buffer.readLine();//以##為關鍵字分割字元String s[] = text.split(##);//設定進EditTexted_nam.setText(s[0]);ed_passwd.setText(s[1]);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

當我們只要進入就會回顯出,我能輸入的使用者名稱和密碼:

 

到這裡我們的讀寫就完成了。

但是有人有沒有發現我們上面的路徑都是我們自己寫死的,同時也是自己用手一個一個寫的,萬一中間寫錯一個字母,豈不是很麻煩。

不過Google給我們提供了一個專門訪問內部儲存的API:getFilesDir()

 

    //建立一個檔案,使用者儲存使用者名稱和密碼    //File file = new File(data/data/com.demo.storage/info.txt);        //getFilesDir返回的是一個File對象,其路徑是:data/data/com.demo.storage/files    File file = new File(getFilesDir(), info.txt);
getFileDir的路徑是包名下files檔案下:當我們點擊登入時,就會在此路徑下建立一個info.txt檔案

 

同理Google也提供了一個API: getCacheDir(),其路徑大家可以猜到了,就是cache所在的路徑了。

我們進入到系統設定,app,正在運行中就找到此進程

就能看到如所示,其中Clear Data按鈕是清除包名檔案夾下所有的內容,Clear Cache是清除Cache檔案夾下的內容

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.