zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    WPF基础篇之控件模板(ControlTemplate)
    WPF基础篇之移动特效
    WPF基础篇之空间布局
    00-API-Mongoose
    00-API-Vue
    博客园皮肤设置
    15-Node
    16-Vue-A
    15-MongoDB
    14-电商项目
  • 原文地址:https://www.cnblogs.com/xiadongqing/p/5658987.html
Copyright © 2011-2022 走看看