歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android中使用SDcard進行文件的讀取

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

日期:2017/3/1 10:39:59   编辑:Linux編程

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



Copyright © Linux教程網 All Rights Reserved