SD卡操作【安卓8】
讀寫SD卡
Context類的openFileInput和openFileOutput方法都是針對應用程序的數據文件夾進行的文件操作,由於手機的ROM容量有限,因此這種操作有一定局限性。
手機的SD卡提供了比ROM更大的存儲容量。更加適合於存取大文件。
Environment[android.os. Environment]
常量及方法 |
類型 |
描述 |
public static final String MEDIA_MOUNTED |
常量 |
擴展存儲設允許進行讀寫訪問 |
public static final String MEDIA_CHECKING |
常量 |
擴展存儲設處於檢查狀態 |
public static final String MEDIA_MOUNTED_READ_ONLY |
常量 |
擴展存儲設處於只讀狀態 |
public static final String MEDIA_REMOVED |
常量 |
擴展存儲設不存在 |
public static final String MEDIA_UNMOUNTED |
常量 |
沒有找到擴展存儲設 |
public static File getDataDirectory() |
普通 |
取得Data目錄 |
public static File getDownloadCacheDirectory() |
普通 |
取得下載的緩存目錄 |
public static File getExternalStorageDirectory() |
普通 |
取得擴展的存儲目錄 |
public static String getExternalStorageState() |
普通 |
取得擴展存儲設備的狀態 |
public static File getRootDirectory() |
普通 |
取得Root目錄 |
public static boolean isExternalStorageRemovable() |
普通 |
判斷擴展的存儲目錄是否被刪除 |
申請SD卡的讀寫權限
打開項目清單文件,在Permission選項卡中選擇權限
SD卡文件讀取操作
1 private TextView tv; 2 private Button bt1; 3 private Button bt2; 4 private EditText et; 5 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.xml文件); 9 et = (EditText) findViewById(R.id.sdET); 10 tv = (TextView) findViewById(R.id.sdTV); 11 bt1 = (Button) findViewById(R.id.sdBT01); 12 bt2 = (Button) findViewById(R.id.sdBT02); 13 bt1.setOnClickListener(this); 14 bt2.setOnClickListener(this); 15 } 16 17 public void onClick(View v) { 18 if (!Environment.getExternalStorageState().equals( 19 Environment.MEDIA_MOUNTED)) {// 判斷SD卡是否存在 20 Toast.makeText(Sd0.this, "SD卡不存在", 3000).show(); 21 return; 22 } 23 switch (v.getId()) { 24 case R.id.sdBT01: 25 // 創建文件夾對象 26 File dir = new File(Environment.getExternalStorageDirectory(),"test"); 27 if (!dir.exists()) { // 如果目錄不存在,就創建 28 dir.mkdir(); 29 } 30 File file = new File(dir, "test.txt"); // 創建文件 31 PrintWriter pw; 32 try { 33 pw = new PrintWriter(file); 34 pw.println(et.getText().toString()); 35 pw.close(); 36 Toast.makeText(Sd0.this, "保存成功", 3000).show(); 37 } catch (FileNotFoundException e) { 38 e.printStackTrace(); 39 } 40 break; 41 case R.id.sdBT02: 42 File f = new File(Environment.getExternalStorageDirectory()+ 43 "/test/test.txt");// 創建文件夾對象 44 BufferedReader br; 45 try { 46 br = new BufferedReader(new InputStreamReader(new FileInputStream(f))); 47 String str = null; 48 while ((str = br.readLine()) != null) { 49 tv.append(str); 50 } 51 } catch (FileNotFoundException e) { 52 e.printStackTrace(); 53 } catch (IOException e) { 54 e.printStackTrace(); 55 } 56 break; 57 } 58 }View Code
SD卡操作【安卓8】