Android開発-ファイルストレージの読み書きsdcard
21341 ワード
Androidは、削除可能な外部ストレージのファイルストレージを提供します.外部のsdcardを呼び出すときはまずEnvironmentを呼び出す.getExternalStorageState() sdcardの使用可能なステータスを確認します.Environmentを通じてgetExternalStorageDirectory()は、Sdcardのパスを取得します.ファイルの外部ストレージへの書き込みにはsdcardのライセンスを追加する必要があります
Junitユニットテストクラス:
ユニットテストクラスはAndroid TestCaseから継承し、リソースリストファイルにユニットテストパッケージを追加し、ユニットテストターゲットパッケージを追加する必要があります.
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から継承し、リソースリストファイルにユニットテストパッケージ