數(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(){};