Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android開發學習——android存儲,android開發存儲

Android開發學習——android存儲,android開發存儲

編輯:關於android開發

Android開發學習——android存儲,android開發存儲


Android的存儲


內部存儲空間
RAM內存:運行內存,相當於電腦的內存
ROM內存:存儲內存,相當於電腦的硬盤
外部存儲空間
 SD卡:相當於電腦的移動硬盤
    * 2.2之前,sd卡路徑:sdcard
    * 4.3之前,sd卡路徑:mnt/sdcard
    * 4.3開始,sd卡路徑:storage/sdcard

* 所有存儲設備,都會被劃分成若干個區塊,每個區塊有固定的大小
* 存儲設備的總大小 = 區塊大小 * 區塊數量


文件訪問權限
* 指的是誰能訪問這個文件
* 在Android中,每一個應用,都是一個獨立的用戶
* 使用10個字母表示  drwxrwxrwx
* 第一個字母:
    * d:表示文件夾
    * -:表示文件
* 第一組rwx:表示的是文件擁有者(owner)對文件的權限
    * r:read,讀
    * w:write
    * x:execute
* 第二組rwx:表示的是跟文件擁有者屬於同一用戶組的用戶(grouper)對文件的權限
* 第三組rwx:表示的其他用戶(other)對文件的權限

在內部存儲空間中讀寫文件

小案例:用戶輸入賬號密碼,勾選“記住賬號密碼”,點擊登錄按鈕,登錄的同時持久化保存賬號和密碼

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/et1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="用戶名:" />
    
    <EditText
        android:id="@+id/et2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="密   碼:" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="記住用戶名和密碼" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="login"
        android:text="登     錄" />

</LinearLayout>
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


   public void login(View v){
       EditText et1 = (EditText) findViewById(R.id.et1);
       EditText et2 = (EditText) findViewById(R.id.et2);
       
       String username = et1.getText().toString();
       String pwd = et2.getText().toString();
       // 判斷用戶是否勾選保存賬號密碼
       CheckBox cb = (CheckBox) findViewById(R.id.checkBox1);
       if(cb.isChecked()){
           //將用戶名和密碼寫到本地文件,用IO流來寫
           File file = new File("data/data/com.example.cunchu/info.txt");//內部存儲空間的路徑
           FileOutputStream fos;
        try {
            fos = new FileOutputStream(file);
            fos.write((username+"####"+pwd).getBytes());
            fos.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
          
       }
       System.out.print("登錄成功!!!");
       Toast.makeText(this,"登錄成功!!!", Toast.LENGTH_SHORT).show();
   }
    
}

public void read(){
        try {
            FileInputStream  fis = new FileInputStream("data/data/com.example.cunchu/info.txt");
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));
            String text = br.readLine();
            String []s = text.split("####");
            EditText et1 = (EditText) findViewById(R.id.et1);
            EditText et2 = (EditText) findViewById(R.id.et2);
//讀取到數據之後,回顯至輸入框 et1.setText(s[0]); et2.setText(s[1]); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }

運行結果:

 

使用路徑api讀寫文件
getFilesDir()得到的file對象的路徑是data/data/com.itheima.rwinrom2/files
    * 存放在這個路徑下的文件,只要你不刪,它就一直在
getCacheDir()得到的file對象的路徑是data/data/com.itheima.rwinrom2/cache
    * 存放在這個路徑下的文件,當內存不足時,有可能被刪除

系統管理應用界面的清除緩存,會清除cache文件夾下的東西,清除數據,會清除整個包名目錄下的東西

如果有時需要直接復制項目
需要改動的地方:
    * 項目名字
    * 應用包名
    * R文件重新導包

 

在外部存儲空間中讀寫文件

   在內部存儲讀寫和外部存儲 讀寫 文件,都是用IO流讀寫,不同的是,路徑不同。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved