Android數(shù)據(jù)存儲(chǔ)

數(shù)據(jù)存儲(chǔ)

數(shù)據(jù)存儲(chǔ)--存儲(chǔ)

  • 第一步:路徑是內(nèi)部存儲(chǔ)空間的路徑 路徑只能寫現(xiàn)在這個(gè)工程的路徑
    File file = new File("data/data/com.example.shuijucunchu/info.txt");
  • 第二步:創(chuàng)建文件輸出流
    FileOutputStream fos;
    傳入一個(gè)file并且實(shí)例化這個(gè)fos
    fos = new FileOutputStream(file);
    把內(nèi)容寫入這個(gè)文件
    fos.write((name+"####"+pass).getBytes());
    關(guān)閉輸出流
    fos.close();

數(shù)據(jù)存儲(chǔ)---讀取

  • 第一步:根據(jù)路徑獲得文件
    File file = new File("data/data/com.example.shuijucunchu/info.txt");
  • 第二步:創(chuàng)建讀取流
    FileInputStream fos = new FileInputStream(file);
  • 第三步:把字節(jié)流轉(zhuǎn)換成字符流
    BufferedReader br = new BufferedReader(new InputStreamReader(fos));
  • 第四步:讀取
    String text = br.readLine();
  • 第五:將字符串 根據(jù)字符轉(zhuǎn)換成數(shù)據(jù)
    String[] s = text.split("####");
  • 賦值
    et_name.setText(s[0]);
    et_pass.setText(s[1]);

用api在內(nèi)部存儲(chǔ)中讀寫文件

  • 其實(shí)就是路徑自己不用寫調(diào)用方法就行了
    第一個(gè)參數(shù)是data/data/com.example.shuijucunchu/files 第二個(gè)參數(shù)是文件名
    File file = new File(getFilesDir(),"info.txt");
    第一個(gè)參數(shù)是data/data/com.example.shuijucunchu/cache
    File file = new File(getCacheDir(),"info.txt");
  • 如何檢測sd卡
    • MEDIA_UNKNOWN:不能識(shí)別sd卡
    • MEDIA_REMOVED:沒有sd卡
    • MEDIA_UNMOUNTED:sd卡存在但是沒有掛載
    • MEDIA_CHECKING:正在準(zhǔn)備
    • MEDIA_MOUNTED:sd卡已經(jīng)掛載,可用

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {邏輯處理}

獲取SD卡剩余空間的大小

  • 第一步:獲取sd卡的路徑并創(chuàng)建File對(duì)象
    File path = Environment.getExternalStorageDirectory();
  • 第二步:根據(jù)sd卡路徑創(chuàng)建一個(gè)StatFs的對(duì)象,這個(gè)對(duì)象包含存儲(chǔ)空間的所有信息
    StatFs stat = new StatFs(path.getPath());
  • 第三步:獲取區(qū)塊大小,獲取區(qū)塊的總個(gè)數(shù),獲取可用區(qū)塊的個(gè)數(shù)
    long blockSize = stat.getBlockSize();
    long totalBlocks = stat.getBlockCount();
    long avaliableBlocks = stat.getAvailableBlocks();
  • 第四步:可用空間 總空間 字符類型轉(zhuǎn)換
    可用 = 可用個(gè)數(shù) * 區(qū)塊的大小
    總個(gè)空間 = 總個(gè)數(shù) * 區(qū)塊的大小
    Formatter.formatFileSize(this, avaliableBlocks * blockSize);

文件訪問權(quán)限

  • 在Android中,每一個(gè)應(yīng)用,都是一個(gè)獨(dú)立的用戶
  • 指的是誰能訪問這個(gè)文件
  • 使用十個(gè)字母drwxrwrwx
  • 第一做字母
    • d:表示文件夾
    • -:表示文件
  • 第一組rwx:表示的是文件擁有者(owner)對(duì)文件的權(quán)限
    • r:reaed,讀
    • w:write 寫
    • x:execute 執(zhí)行權(quán)限 -表示沒有執(zhí)行權(quán)限
  • 第二組rwx:表示的是跟文件擁有者屬于同一個(gè)用戶組的用戶對(duì)文件的權(quán)限。
  • 第三組rwx:表示的其他用戶對(duì)文件的權(quán)限

SharedPreference寫入文件

  • 非常適合用來保存簡單的,零散的數(shù)據(jù)
  • 第一步:初始化對(duì)象SharedPreferences 第一個(gè)參數(shù):文件名 第二個(gè)參數(shù):權(quán)限
    SharedPreferences sp = getSharedPreferences("info",MODE_PRIVATE);
  • 第二步:初始化sp的編輯器
    Editor ed = sp.edit();
  • 第三步:寫入文件,根據(jù)鍵,值的方式
    ed.putString("name", name);
    ed.putString("pass", pass);
  • 第四步:提交
    ed.commit();

SharedPreference讀取文件

  • 第一步:初始化對(duì)象
    SharedPreferences sp = getSharedPreferences("info",MODE_PRIVATE);
  • 第二步:根據(jù)鍵去取值 第一個(gè)參數(shù):鍵 第二個(gè)參數(shù):假如根據(jù)這個(gè)鍵取不到值,那就顯示第二個(gè)參數(shù)
    String name = sp.getString("name", "");

外部數(shù)據(jù)存儲(chǔ)中讀寫文件

  • 第一步:開啟讀sd卡的權(quán)限
    在清單文件中選擇 Permissions然后再添加權(quán)限
  • 第二步:寫路徑
    File file = new File("sdcard/info.txt");
  • 當(dāng)讀sd卡時(shí)不需要權(quán)限4.0之前。 在4.0之后在開發(fā)者權(quán)限 設(shè)置保護(hù)sd卡 那么就需要讀sd卡的權(quán)限

對(duì)話框

  • 創(chuàng)建提示框
    參數(shù)1:this 參數(shù)2:提示框的內(nèi)容 參數(shù)3:什么時(shí)候消失
    Toast t = Toast.makeText(this, "登陸成功", Toast.LENGTH_SHORT);
  • 顯示對(duì)話框
    t.show();

如何關(guān)聯(lián)源碼

  • ctrl+左鍵 選擇Attach Source 把源碼導(dǎo)入才能看到

問題

  • 為什么要加try{}catch(){};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容