Android外部SD卡的讀取

來源:互聯網
上載者:User

標籤:

  1 package com.kevin.writeorreadfile1_1;  2   3 import android.app.Activity;  4 import android.bluetooth.le.ScanFilter;  5 import android.graphics.Bitmap;  6 import android.graphics.BitmapFactory;  7 import android.media.MediaScannerConnection;  8 import android.os.Bundle;  9 import android.os.Environment; 10 import android.util.Log; 11 import android.view.View; 12 import android.widget.Button; 13 import android.widget.ImageView; 14 import android.widget.Toast; 15  16 import java.io.BufferedInputStream; 17 import java.io.BufferedOutputStream; 18 import java.io.File; 19 import java.io.FileNotFoundException; 20 import java.io.FileOutputStream; 21 import java.io.IOException; 22 import java.io.InputStream; 23 import java.io.OutputStream; 24 import java.util.Scanner; 25  26 /** 27  * 儲存並讀取資料 28  * 1.確保外部SD卡可用Environment.getExternalStorageState(); 29  * 2.擷取SD卡的根路徑 30  * 3.寫入許可權     31  * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 32  * <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> 33  * 4.讀取 34  */ 35 public class MainActivity extends Activity implements View.OnClickListener { 36     private boolean state = true; 37     private  File file; 38     private ImageView img; 39     private Button keepBtn,readBtn; 40     @Override 41     protected void onCreate(Bundle savedInstanceState) { 42         super.onCreate(savedInstanceState); 43         setContentView(R.layout.activity_main); 44         //初始化控制項 45         keepBtn = (Button) findViewById(R.id.btn_keep_file); 46         readBtn = (Button) findViewById(R.id.btn_read_file); 47         img = (ImageView) findViewById(R.id.out_img); 48  49         //點擊事件 50         keepBtn.setOnClickListener(this); 51         readBtn.setOnClickListener(this); 52  53         //確保SD卡可用 54         String storageState = Environment.getExternalStorageState();//擷取SD卡的狀態 55         if(storageState.equals(Environment.MEDIA_MOUNTED)){ 56             Log.i("TAG","當前SD卡可用"); 57         }else { 58             state = false; 59         } 60     } 61  62     @Override 63     public void onClick(View view) { 64             switch (view.getId()){ 65                 case R.id.btn_keep_file://點擊儲存 66                     if(state){ 67                         saveImg(); 68                     } 69                     break; 70                 case R.id.btn_read_file://點擊讀取 71                     if(state){ 72                         showImg(); 73                     } 74                     break; 75             } 76     } 77     // 78     public void saveImg(){ 79         BufferedInputStream is = null; 80         BufferedOutputStream os = null; 81         try { 82             File storageDirectory = Environment.getExternalStorageDirectory(); 83             file = new File(storageDirectory,"YangKai.jpg"); 84             //讀取項目中的圖片 85             InputStream inputStream = getResources().openRawResource(R.drawable.yangkai_photo); 86             OutputStream outputStream = new FileOutputStream(file); 87             //緩衝機制 88             is = new BufferedInputStream(inputStream); 89             os = new BufferedOutputStream(outputStream); 90             //讀寫操作 91             int length = 0 ; 92             byte[] bytes = new byte[1024]; 93             while ((length = is.read(bytes)) != -1){ 94                 os.write(bytes,0,length); 95                 os.flush();//重新整理操作 96             } 97             Toast.makeText(this,"圖片已儲存",Toast.LENGTH_SHORT).show(); 98             ScanFile(file.getPath()); 99         } catch (FileNotFoundException e) {100             e.printStackTrace();101         } catch (IOException e) {102             e.printStackTrace();103         }finally {104             if ( is != null){105                 try {106                     is.close();107                 } catch (IOException e) {108                     e.printStackTrace();109                 }110             }111             if (os != null){112                 try {113                     os.close();114                 } catch (IOException e) {115                     e.printStackTrace();116                 }117             }118         }119     }120 121     //掃描進入圖片122     private void ScanFile(String path) {123 124         MediaScannerConnection.scanFile(this,new String[]{path},null,null);125     }126 127     //顯示圖片128     public void showImg(){129         //從檔案中讀取出來130         Bitmap bitmap = BitmapFactory.decodeFile(file.getPath());131         img.setImageBitmap(bitmap);132     }133 }

 

Android外部SD卡的讀取

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.