Android外部SD卡的读取
package com.kevin.writeorreadfile1_1; import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.MediaScannerConnection;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Scanner; /**
* 保存并读取数据
* 1.确保外部SD卡可用Environment.getExternalStorageState();
* 2.获取SD卡的根路径
* 3.写入权限
* <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
* <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
* 4.读取
*/
public class MainActivity extends Activity implements View.OnClickListener {
private boolean state = true;
private File file;
private ImageView img;
private Button keepBtn,readBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
keepBtn = (Button) findViewById(R.id.btn_keep_file);
readBtn = (Button) findViewById(R.id.btn_read_file);
img = (ImageView) findViewById(R.id.out_img); //点击事件
keepBtn.setOnClickListener(this);
readBtn.setOnClickListener(this); //确保SD卡可用
String storageState = Environment.getExternalStorageState();//获取SD卡的状态
if(storageState.equals(Environment.MEDIA_MOUNTED)){
Log.i("TAG","当前SD卡可用");
}else {
state = false;
}
} @Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn_keep_file://点击保存
if(state){
saveImg();
}
break;
case R.id.btn_read_file://点击读取
if(state){
showImg();
}
break;
}
}
//
public void saveImg(){
BufferedInputStream is = null;
BufferedOutputStream os = null;
try {
File storageDirectory = Environment.getExternalStorageDirectory();
file = new File(storageDirectory,"YangKai.jpg");
//读取项目中的图片
InputStream inputStream = getResources().openRawResource(R.drawable.yangkai_photo);
OutputStream outputStream = new FileOutputStream(file);
//缓存机制
is = new BufferedInputStream(inputStream);
os = new BufferedOutputStream(outputStream);
//读写操作
int length = 0 ;
byte[] bytes = new byte[1024];
while ((length = is.read(bytes)) != -1){
os.write(bytes,0,length);
os.flush();//刷新操作
}
Toast.makeText(this,"图片已保存",Toast.LENGTH_SHORT).show();
ScanFile(file.getPath());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if ( is != null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} //扫描进入图片
private void ScanFile(String path) { MediaScannerConnection.scanFile(this,new String[]{path},null,null);
} //显示图片
public void showImg(){
//从文件中读取出来
Bitmap bitmap = BitmapFactory.decodeFile(file.getPath());
img.setImageBitmap(bitmap);
}
}
Android外部SD卡的读取的更多相关文章
- Android 4.0以后正确的获取外部sd卡存储目录
刚解决这个棘手的问题 找了很久,随笔记下. 网上搜索 android 获取外部sd卡存储目录 普遍都是: 1) Environment.getExternalStorageDirectory() 这个 ...
- 【Android】14.0 第14章 内部存储与外部SD卡存储—本章示例主界面
分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 Android使用的文件系统是基于Linux的文件系统,在Android应用程序中,开发人员既可以建立和访问程序自 ...
- Android获取SD卡路径及SDCard内存的方法
这篇文章主要介绍了Android获取SD卡路径及SDCard内存的方法,较为详细的分析了Android针对SD卡操作所涉及的类及其具体函数功能,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了A ...
- asserts文件存到外部SD卡里
package com.example.wang.testapp3; import android.content.res.AssetManager; import android.graphics. ...
- Android 常见SD卡操作
目录 Android 常见SD卡操作 Android 常见SD卡操作 参考 https://blog.csdn.net/mad1989/article/details/37568667. [0.] E ...
- android 获取sd卡根目录
dir:/storage/emulated/0 也就是 sdcard目录 ====== android 获取sd卡根目录 public String getSDPath(){ File ...
- Android获取SD卡路径/内存的几种方法
Android获取SD卡路径 本篇将会带领大家学习如何获取android路径的几种常见用法,但在我开始bb之前需要大家清楚android中内存和外存之间的区别,下面进行简短介绍:android中的内存 ...
- Android_(控件)使用ListView显示Android系统SD卡的文件列表_02
使用ListView显示Android SD卡中的文件列表 父类布局activity_main.xml,子类布局item_filelayout(一个文件的单独存放) 运行截图: 程序结构 <?x ...
- Android 读写SD卡的文件
今天介绍一下Android 读写SD卡的文件,要读写SD卡上的文件,首先需要判断是否存在SD卡,方法: Environment.getExternalStorageState().equals(Env ...
随机推荐
- javascript 之拼接html字符串
// var one = {"id":1, "leasetime":2, "ney":0,"myhuifangshi": ...
- 简单封装cookie操作
1 //设置cookie 2 function setCookie(name, value, day) { 3 var oDate = new Date(); 4 oDate.setDate(oDat ...
- .net mysql 支持表情
1.表 utf8mb4 2.字段 utf8mb4 3.连接字符串 utf8mb4 4.存储过程参数 utf8mb4
- Eclipse反编译工具Jad及插件JadClipse配置
Jad是一个Java的一个反编译工具,是用命令行执行,和通常JDK自带的java,javac命令是一样的.不过因为是控制台运行,所以用起来不太方便.不过幸好有一个eclipse的插件JadClipse ...
- Vue中class与style绑定
gitHub地址:https://github.com/lily1010/vue_learn/tree/master/lesson07 一 用对象的方法绑定class 很简单,举个栗子: <!D ...
- vc6.0连接mysql数据库
一.MySQL的安装 Mysql的安装去官网下载就可以...最新的是5.7版本.. 二.VC6.0的设置 (1)打开VC6.中选0 工具栏Tools菜单下的Options选项,在Directories ...
- xib命名注意事项--防止被其他控制器意外地 当做默认的 view了
注意: 1.创建的xib如果不是想给指定的控制器做view的话,命名就要注意了! 2.最好是不要命名和控制器名字相关的xib. 如下举例说明一下: - (void)touchesBegan:(NSSe ...
- iOS 学习 - 5.UILabel设置行距
NSMutableAttributedString *arrString =[[NSMutableAttributedString alloc]initWithString:@"asdass ...
- GCD中的dispatch_apply的用法及作用
GCD中的dispatch_apply的用法及作用 (一)dispatch_apply的基本用法 dispatch_apply函数是dispatch_sync函数和Dispatch Group的关联A ...
- IT技术很好的视频网址
1.华为工程师 带你实战C++ 2.vimoe,国外的,需要FQ哦.https://vimeo.com/85831438