• Android外部SD卡的读取


      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 }
  • 相关阅读:
    16. 3Sum Closest
    17. Letter Combinations of a Phone Number
    20. Valid Parentheses
    77. Combinations
    80. Remove Duplicates from Sorted Array II
    82. Remove Duplicates from Sorted List II
    88. Merge Sorted Array
    257. Binary Tree Paths
    225. Implement Stack using Queues
    113. Path Sum II
  • 原文地址:https://www.cnblogs.com/xiadongqing/p/5658987.html
Copyright © 2020-2023  润新知