Android開発-ファイルストレージの読み書きsdcard

21341 ワード

Androidは、削除可能な外部ストレージのファイルストレージを提供します.外部のsdcardを呼び出すときはまずEnvironmentを呼び出す.getExternalStorageState() sdcardの使用可能なステータスを確認します.Environmentを通じてgetExternalStorageDirectory()は、Sdcardのパスを取得します.ファイルの外部ストレージへの書き込みにはsdcardのライセンスを追加する必要があります
  
  boolean mExternalStorageAvailable = false;
  boolean mExternalStorageWriteable = false;
  String state = Environment.getExternalStorageState();

  if (Environment.MEDIA_MOUNTED.equals(state)) {
      // We can read and write the media
      mExternalStorageAvailable = mExternalStorageWriteable = true;
  } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
      // We can only read the media
      mExternalStorageAvailable = true;
      mExternalStorageWriteable = false;
  } else {
      // Something else is wrong. It may be one of many other states, but all we need
      //  to know is we can neither read nor write
      mExternalStorageAvailable = mExternalStorageWriteable = false;
  }
android :
   :
  
 1 package com.example.android_data_storage_sdcard.file;

 2 

 3 import java.io.ByteArrayOutputStream;

 4 import java.io.File;

 5 import java.io.FileInputStream;

 6 import java.io.FileNotFoundException;

 7 import java.io.FileOutputStream;

 8 import java.io.IOException;

 9 

10 import android.os.Environment;

11 import android.util.Log;

12 /**

13  * @author xiaowu

14  * @note           (sdcard  )。

15  *                context        

16  */

17 public class FileUitls {

18     private final String TAG = "FileUtil";

19 

20     /**

21      *           SD 

22      * @param fileName

23      * @param mode

24      * @param data

25      * @return        sdcard  

26      */

27     public boolean saveFileToSdcard(String fileName,  byte[] data) {

28         boolean flag = false;

29         //   sdcard   

30         String state = Environment.getExternalStorageState();

31         //   sdcard     /mnt/sdcard/...

32         File root = Environment.getExternalStorageDirectory();

33         FileOutputStream outputStream = null;

34         // Environment.MEDIA_MOUNTED  SD            

35         if (Environment.MEDIA_MOUNTED.equals(state)) {

36             //  sdcard         

37             File file = new File(root, fileName);

38             try {

39                 outputStream = new FileOutputStream(file);

40                 outputStream.write(data, 0, data.length);

41                 flag = true ;

42             } catch (FileNotFoundException e) {

43                 Log.i(TAG, "       !");

44             } catch (Exception e) {

45                 Log.i(TAG, "       ");

46             } finally {

47                 if (outputStream != null) {

48                     try {

49                         outputStream.close();

50                     } catch (IOException e) {

51                         Log.i(TAG, "  IO     !");

52                     }

53                 }

54             }

55         }

56         return flag;

57     }

58     /**

59      *  sdcard    

60      * @param fileName

61      * @return     

62      */

63     public String  readFromSdcard(String fileName){

64         String  str = "" ;

65         FileInputStream inputStream = null;

66         String state = Environment.getExternalStorageState();

67         ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

68         try {

69             if (Environment.MEDIA_MOUNTED.equals(state)) {

70                 //  Sdcard  

71                 File root = Environment.getExternalStorageDirectory();

72                 File file = new File(root.getAbsolutePath(),fileName);

73                 if(file.exists()){

74                     inputStream = new FileInputStream(file);

75                     int len = 0 ;

76                     byte[] data = new byte[1024];

77                     while ((len = inputStream.read(data)) != -1) {

78                         byteArrayOutputStream.write(data, 0, len);

79                     }

80                     return new String(byteArrayOutputStream.toByteArray());

81                 }

82             }

83         } catch (Exception e) {

84             Log.i(TAG, "      !");

85         }finally{

86             if(inputStream != null){

87                 try {

88                     inputStream.close();

89                 } catch (IOException e) {

90                     Log.i(TAG, "     !");

91                 }

92             }

93         }

94         return str ;

95     }

96 }

Junitユニットテストクラス:
ユニットテストクラスはAndroid TestCaseから継承し、リソースリストファイルにユニットテストパッケージを追加し、ユニットテストターゲットパッケージを追加する必要があります.