日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Android在代碼中如何使用SD卡

1 SD 是否可用檢查

創(chuàng)新互聯(lián)建站是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、企業(yè)網(wǎng)站建設(shè),友情鏈接,廣告投放平臺(tái)為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。

有兩種方式,一種是寫(xiě)一個(gè)監(jiān)聽(tīng)函數(shù),用來(lái)監(jiān)聽(tīng)

 
 
 
  1. private final BroadcastReceiver broadcastRec = new BroadcastReceiver() {  
  2. @Override  
  3. public void onReceive(Context context, Intent intent) {  
  4. if (intent.getAction().equals("Android.intent.action.MEDIA_MOUNTED")) { //SD 卡已經(jīng)成功掛載  
  5. //有SD 卡  
  6. } else if (intent.getAction().equals("android.intent.action.MEDIA_REMOVED")  
  7. ||  
  8. intent.getAction().equals("android.intent.action.ACTION_MEDIA_UNMOUNTED")  
  9. ||  
  10. intent.getAction().equals("android.intent.action.ACTION_MEDIA_BAD_REMOVAL")) {//各種未掛載狀態(tài)  
  11. //無(wú)SD 卡  
  12.    }  
  13.  }  
  14. }; 

另一種在我看來(lái),更簡(jiǎn)單一些:

 
 
 
  1. File f = new File("/sdcard/");  
  2. f.exists(); 

2 卡上數(shù)據(jù)的讀寫(xiě)

在動(dòng)手之前,我們先來(lái)看看,要對(duì)SD 卡進(jìn)行讀寫(xiě)操作,Android 為我們準(zhǔn)備了哪些類/接口。

接口:FileFilter

:File、FileInputStream、FileOutputStream

下面我們依次對(duì)上面出場(chǎng)的做個(gè)簡(jiǎn)單的介紹吧,同時(shí),也會(huì)給出若干代碼來(lái)說(shuō)明各個(gè)類如何使用

3 File

文件系統(tǒng)的一個(gè)抽象描述類,可以使用相對(duì)路徑和絕對(duì)路徑,該類提供了若干方法查詢/修改文件信息

 
 
 
  1. File file = new File("/sdcard/a.txt"); 

判斷文件是否存在:

 
 
 
  1. file.exists() 

“文件”是目錄還是文件

 
 
 
  1. file.isDirectory() 

如果文件為目錄,如何列出子目錄呢?

 
 
 
  1. File[ ] filefiles = file.listFiles(); 

對(duì)于文件,如果獲得文件的一些信息

 
 
 
  1. file.length(); //文件的長(zhǎng)度  
  2. file.canRead(); //文件可以讀嗎  
  3. file.canWrite(); //文件可以寫(xiě)嗎  
  4. file.delete(); //刪除該文件 

下面,給出一些片斷代碼來(lái)展示如何使用File 類

 
 
 
  1. //創(chuàng)建一個(gè)新文件  
  2. File file = new File("/sdcard/a.txt");  
  3. if (!file.exists()) {  
  4. try {  
  5. file.createNewFile();  
  6. } catch (IOException e) {  
  7. e.printStackTrace();  
  8. } }  
  9. //創(chuàng)建一個(gè)新文件夾  
  10. File file = new File("/sdcard/a/b/c");  
  11. if (!file.exists()) {  
  12. try {  
  13. file.mkdirs();  

請(qǐng)注意,mkdirs()和mkdir()的用法,mkdirs()表示,如果需要,會(huì)先創(chuàng)建上層目錄,如上述代碼中,如果SD 卡根目錄不存在目錄a,那么,使用mkdir()會(huì)拋出異常。

#p#

4 FileFilter

我們知道,listFiles()會(huì)列出當(dāng)前目錄下的文件,但是,另一個(gè)問(wèn)題出來(lái)了,如果當(dāng)前目錄下文件雜亂無(wú)部分,而我們又不想列出所有文件,怎么辦?FileFilter 提供了一個(gè)解決方法。我們只需要實(shí)現(xiàn)public abstract boolean accept(File pathname)接口就可以了。

 
 
 
  1. FileFilter filter = new FileFilter() {  
  2. public boolean accept (File file) {  
  3. if (file.isFile() && file.getAbsolutePath().toLowerCase().endsWith(".txt")) {  
  4. return true;  
  5. }  
  6. return false;  
  7. }  
  8. };  
  9. File[] filefiles = file.listFiles(filter); 

以上代碼展示了如何只列出當(dāng)前目錄下的TXT 文件。

5 FileInputStream

我們不僅需要對(duì)文件進(jìn)行操作,還需要對(duì)文件的內(nèi)容進(jìn)行操作,這時(shí)候,F(xiàn)ileInputStream 就登場(chǎng)了

FileInputStream 繼承自InputStream,但是FileInputStream 使用了緩沖,以提高頻繁讀入數(shù)據(jù)時(shí)的性能。

使用FileInputStream 也很簡(jiǎn)單

 
 
 
  1. FileInputStream fis = new FileInputStream("/sdcard/a.txt");  
  2. byte[ ] abytes = new byte[1024]  
  3. int len = fis.read(abytes); 

在上述代碼中,我們打開(kāi)了SD 卡根目錄下的a.txt 文件,同時(shí),讀入1K 的數(shù)據(jù),需要注意的是,read 并不能保
證一定讀入期望長(zhǎng)度的數(shù)據(jù),我們需要對(duì)讀入數(shù)據(jù)的長(zhǎng)度進(jìn)行檢查。

6 FileOutputStream

 
 
 
  1. FileOutputStream 與OutputStream 的用法差不多,在些也不多說(shuō),給出一個(gè)代碼吧:  
  2. FileOutputStream fos = new FileOutputStream("/sdcard/a.txt");  
  3. fos.write("Hello World!".getBytes());  
  4. fos.flush(); 

上述代碼會(huì)向a.txt 中寫(xiě)入Hello World 字符,請(qǐng)注意,F(xiàn)ileOutputStream 也使用了緩沖,因此,數(shù)據(jù)不會(huì)立即寫(xiě)入文件中,當(dāng)系統(tǒng)認(rèn)為需要寫(xiě)回?cái)?shù)據(jù)的時(shí)候,真正的寫(xiě)回才發(fā)生,因此,如果為了讓數(shù)據(jù)立即寫(xiě)回,需要使用flush()方法。

也許你會(huì)問(wèn)到,我不想把文件原有的內(nèi)容抹到,怎么?這個(gè)也簡(jiǎn)單,

 
 
 
  1. FileOutputStream fos = new FileOutputStream("/sdcard/a.txt", true); 

true 表示向文件后面追加數(shù)據(jù)

【編輯推薦】

Android模擬器使用SD卡

你如何正確啟動(dòng)Android SDK 1.5模擬器

安裝Android SDK 2.0及創(chuàng)建2.0模擬器的方法

把Android源代碼加入SDK,就可以按F3查看類了


網(wǎng)站題目:Android在代碼中如何使用SD卡
標(biāo)題URL:http://m.5511xx.com/article/dphdcic.html