跟我學Android之十二 文件解析與處理

視頻課: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();
相關文章
相關標籤/搜索