視頻課:https://edu.csdn.net/course/play/7621
android
本章內容緩存
第1節 File Explorer操做併發
第2節 SharedPreferencesapp
第3節 普通文件操做ide
第4節 SD卡讀寫操做性能
本章目標
this
熟練掌握 FileExplorer 的用法spa
熟練掌握 SharedPreference 文件操做。操作系統
熟練掌握普通文件的讀寫操做。.net
熟練掌握 SD 卡讀寫操做的方法。
FileExplorer操做
查看文件結構
建立文件夾
導 入文件
導出文件及文件夾
刪除文件
SharedPreferences概述
SharedPreferences主要用於保存相似配置信息的內容,SharedPreferences以XML格式保存數據,保存在/data/data/<package>/shared_prefs目錄中,跟Properties中的信息相似,主要是鍵值對
讀取SharedPreferences
首先經過Context. getSharedPreferences方法得到對象
第一個參數是文件名,須要包含後綴名(自動設置爲xml)
第二個參數是訪問模式,和普通文件的訪問模式相同
經過SharedPreferences中的方法讀取數據
SharedPreferences sp = getSharedPreferences("config",
Context.MODE_PRIVATE);
Stringusername = sp.getString(「username」,「root」);
Stringpassword = sp.getString(「password」,「123456」);
寫入SharedPreferences
首先經過Context. getSharedPreferences方法得到對象
獲取對象時採用寫模式打開
經過SharedPreferences得到Editor對象
Editor對象中包含了寫數據的方法
數據寫入完成後必定要執行commit方法讓數據生效
SharedPreferences sp = getSharedPreferences("config",
Context.MODE_PRIVATE);
Editor editor =sp.edit();
editor.put(「username」, 「root」);
editor.put(「password」, 「123456」);
editor.commit();
pe:solid;mso-style-textfill-fill-themecolor:text1;mso-style-textfill-fill-color:black;mso-style-textfill-fill-alpha:100.0%'>方法讓數據生效
外部訪問SharedPreferences
在一個應用中訪問另外一個應用的SharedPreferences數據
經過Context. createPackageContext 建立Context的實例
第一個參數是另外一個應用的package名
第二個參數是選項標誌
CONTEXT_INCLUDE_CODE
CONTEXT_IGNORE_SECURITY
經過創建的Context對象訪問SharedPreferences
Contextcontext = createPackageContext(PKGNAME,
CONTEXT_IGNORE_SECURITY);
SharedPreferences cfg = context.getSharedPreferences(
PREFERENCE_NAME, MODE);
在一個應用中訪問另外一個應用的SharedPreferences數據
u關於權限的幾個注意點
Ø兩個應用的android:sharedUserId的內容要相同
Ø雙方使用MODE_WORLD_READABLE或MODE_WORLD_WRITEABLE模式讀寫內容
利用openFileInput讀取文件
利用openFileInput讀取文件
u這是Context中的一個方法
Ø可以從應用相關的路徑中打開一個文件輸入流
u文件位置
Ø/data/data/<package>/files
u返回值是一個FileInputStream的對象
Ø這是一個文件輸入字節流
利用openFileInput讀取文件
u讀取文件的一個示例
FileInputStream inputStream = this.openFileInput(fileName);
byte[]bytes = new byte[1024];
ByteArrayOutputStream os= new ByteArrayOutputStream();
while(inputStream.read(bytes)!= -1) {
os.write(bytes, 0, bytes.length);
}
inputStream.close();
os.close();
Stringcontent = new String(os.toByteArray());
showTextView.setText(content);
利用openFileOutput方法寫入文件
u文件不存在時自動建立
u方法的第二個參數爲打開模式
ØMODE_PRIVATE只能建立它的應用訪問,重複寫入時會文件覆蓋
ØMODE_APPEND 私有訪問,重複寫入時會在文件的末尾進行追加
ØMODE_WORLD_READABLE公用模式,可讀
ØMODE_WORLD_WRITEABLE公用模式,可讀寫
u一般建議使用私有模式
Ø公用模式下操做文件很危險,由於一旦併發將會帶來程序的漏洞
利用openFileOutput方法寫入文件
u寫入文件示例
FileOutputStream outputStream = openFileOutput(fileName,
Activity.MODE_PRIVATE);
outputStream.write(content.getBytes());
outputStream.flush();
outputStream.close();
合理利用緩存
u文件的讀寫是對存儲設備的訪問
Ø輸入輸出的速率比較低
Ø頻繁訪問時會影響性能
u適當使用緩存提交效率
Ø將文件中須要頻繁訪問的內容讀入內存
Ø在內存中進行數據的操做
Ø按期或者須要時再寫入文件
Ø減小文件的輸入輸出次數
u可是緩存不能太大,以避免佔用太多資源致使系統性能降低
瀏覽SD卡上的文件
uSD卡一般是手機的擴展存儲
u掛載到手機操做系統的文件系統下/mnt/sdcard/
uSD卡上的目錄對全部應用都是可寫的
u使用File類瀏覽SD卡上的目錄內容
mso-color-index:1;mso-font-kerning:12.0pt;language:zh-CN;mso-style-textfill-type:solid;mso-style-textfill-fill-themecolor:text1;mso-style-textfill-fill-color:black;mso-style-textfill-fill-alpha:100.0%'>公用模式下操做文件很危險,由於一旦併發將會帶來程序的漏洞
Filedir = new File(「/mnt/sdcard」);
String[]s = dir.list();
讀取SD卡上的文件
u使用FileInputStream或者FileReader進行文件讀取
FileInputStream in = new FileInputStream(「/mnt/sdcard/……」);byte[] bytes = new byte[1024];ByteArrayOutputStream os= new ByteArrayOutputStream();while (in.read(bytes) != -1) {os.write(bytes, 0, bytes.length);}in.close();os.close();String content = new String(os.toByteArray());showTextView.setText(content);
將文件保存到SD卡上
u使用FileOutputStream或者FileWriter進行文件寫入
FileOutputStream out = new FileOutputStream(「/mnt/sdcard/..」);out.write(content.getBytes());out.flush();out.close();