歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android中使用SDcard進行文件的讀取

平時我們需要在手機上面存儲想音頻,視頻等等的大文件,以前學過使用File進行存儲(使用File操作進行存儲)見 http://www.linuxidc.com/Linux/2012-01/51441.htm ;由於考慮到手機本身的存儲空間小,這時候我們需要把文件存儲在SDcard中,今天自己也學習了一下在Android進行sdcard的存儲使用方法;

本文工程源碼下載地址

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/1月/13日/Android中使用SDcard進行文件的讀取/

    首先如果要在程序中使用sdcard進行存儲,我們必須要在AndroidManifset.xml文件進行下面的權限設置:

  在AndroidManifest.xml中加入訪問SDCard的權限如下:

  <!-- 在SDCard中創建與刪除文件權限 -->

  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

 <!-- 往SDCard寫入數據權限 -->

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

     

    接著我們在使用SDcard進行讀寫的時候 會用到Environment類下面的幾個靜態方法  

   1: getDataDirectory()  獲取到Androi中的data數據目錄

   2:getDownloadCacheDirectory()  獲取到下載的緩存目錄

   3:getExternalStorageDirectory()  獲取到外部存儲的目錄 一般指SDcard

   4:getExternalStorageState() 獲取外部設置的當前狀態 一般指SDcard, 

         android系統中對於外部設置的狀態,我們比較常用的應該是 MEDIA_MOUNTED(SDcard存在並且可以進行讀寫)  MEDIA_MOUNTED_READ_ONLY (SDcard存在,只可以進行讀操作)  當然還有其他的一些狀態,可以在文檔中進行查找到  

    5:getRootDirectory()  獲取到Android Root路徑

   6:isExternalStorageEmulated() 返回Boolean值判斷外部設置是否有效

   7:isExternalStorageRemovable()  返回Boolean值,判斷外部設置是否可以移除

   【注】上面進行紅色標記的方法,我們會常用

[java]
  1. Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)  代碼中這句:我們對SDcard的狀態進行判斷,  

     下面看實現SDCard進行文件讀寫操作的Demo:

     

[java]
  1. package com.jiangqq.sdcard;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileOutputStream;  
  6.   
  7. import android.app.Activity;  
  8. import android.content.Context;  
  9. import android.os.Bundle;  
  10. import android.os.Environment;  
  11. import android.view.View;  
  12. import android.view.View.OnClickListener;  
  13. import android.widget.Button;  
  14. import android.widget.EditText;  
  15. import android.widget.Toast;  
  16.   
  17. public class SDcardActivity extends Activity {  
  18.     private Button bt1, bt2;  
  19.     private EditText et1, et2;  
  20.   
  21.     private static final String FILENAME = "temp_file.txt";  
  22.   
  23.     @Override  
  24.     public void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.main);  
  27.         bt1 = (Button) this.findViewById(R.id.bt1);  
  28.         bt2 = (Button) this.findViewById(R.id.bt2);  
  29.         et1 = (EditText) this.findViewById(R.id.et1);  
  30.         et2 = (EditText) this.findViewById(R.id.et2);  
  31.         bt1.setOnClickListener(new MySetOnClickListener());  
  32.         bt2.setOnClickListener(new MySetOnClickListener());  
  33.     }  
  34.   
  35.     private class MySetOnClickListener implements OnClickListener {  
  36.   
  37.         @Override  
  38.         public void onClick(View v) {  
  39.             File file = new File(Environment.getExternalStorageDirectory(),  
  40.                     FILENAME);  
  41.             switch (v.getId()) {  
  42.             case R.id.bt1:// 使用SDcard寫操作   
  43.                 if (Environment.getExternalStorageState().equals(  
  44.                         Environment.MEDIA_MOUNTED)) {  
  45.   
  46.                     try {  
  47.                         FileOutputStream fos = new FileOutputStream(file);  
  48.                         fos.write(et1.getText().toString().getBytes());  
  49.                         fos.close();  
  50.                         Toast.makeText(SDcardActivity.this"寫入文件成功",  
  51.                                 Toast.LENGTH_LONG).show();  
  52.                     } catch (Exception e) {  
  53.                         Toast.makeText(SDcardActivity.this"寫入文件失敗",  
  54.                                 Toast.LENGTH_SHORT).show();  
  55.                     }  
  56.                 } else {  
  57.                     // 此時SDcard不存在或者不能進行讀寫操作的   
  58.                     Toast.makeText(SDcardActivity.this,  
  59.                             "此時SDcard不存在或者不能進行讀寫操作", Toast.LENGTH_SHORT).show();  
  60.                 }  
  61.                 break;  
  62.   
  63.             case R.id.bt2:// 使用SDcard讀操作   
  64.                 if (Environment.getExternalStorageState().equals(  
  65.                         Environment.MEDIA_MOUNTED)) {  
  66.                     try {  
  67.                         FileInputStream inputStream = new FileInputStream(file);  
  68.                         byte[] b = new byte[inputStream.available()];  
  69.                         inputStream.read(b);  
  70.                         et2.setText(new String(b));  
  71.                         Toast.makeText(SDcardActivity.this"讀取文件成功",  
  72.                                 Toast.LENGTH_LONG).show();  
  73.                     } catch (Exception e) {  
  74.                         Toast.makeText(SDcardActivity.this"讀取失敗",  
  75.                                 Toast.LENGTH_SHORT).show();  
  76.                     }  
  77.                 } else {  
  78.                     // 此時SDcard不存在或者不能進行讀寫操作的   
  79.                     Toast.makeText(SDcardActivity.this,  
  80.                             "此時SDcard不存在或者不能進行讀寫操作", Toast.LENGTH_SHORT).show();  
  81.                 }  
  82.                 break;  
  83.             }  
  84.   
  85.         }  
  86.   
  87.     }  
  88.   
  89. }  
下面截圖效果:

  



Copyright © Linux教程網 All Rights Reserved