Android-SDCard外部存储文件读写
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
一想到Android中到SdCard就要想到 Environment,写入到路径一定要用Environment,读取到路径一定要要用Environment,因为每部手机到SdCard到路径都会不同Environment.getExternalStorageDirectory()
千万不要这样写路径,例如:/mnt/sdcard/ /sdcard/storage/ 等等
SdCard读文件读写操作:
package liudeli.datastorage; import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.Toast; import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class SdcardActivity extends Activity implements View.OnClickListener { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sdcard); initViewListener();
} private void initViewListener() {
Button btCheckMountState = findViewById(R.id.bt_check_mount_state);
Button btOutput = findViewById(R.id.bt_output_sdcard);
Button btInput = findViewById(R.id.bt_input_sdcard); btCheckMountState.setOnClickListener(this);
btOutput.setOnClickListener(this);
btInput.setOnClickListener(this);
} @Override
protected void onDestroy() {
super.onDestroy();
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_check_mount_state:
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
alterToast("Sdcard可用");
} else {
alterToast("Sdcard不可用");
}
break;
case R.id.bt_input_sdcard: {
File file = new File(Environment.getExternalStorageDirectory(), "MySdcard.txt");
if (!file.exists()) {
alterToast("Sdcard的文件不存在");
return;
}
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String result = br.readLine();
alterToast(result);
br.close();
} catch (Exception e) {
e.printStackTrace();
}
break;
}
case R.id.bt_output_sdcard: {
File file = new File(Environment.getExternalStorageDirectory(), "MySdcard.txt");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileWriter fileWriter = new FileWriter(file);
fileWriter.write("饭撒发生的噶地方舒服舒服撒冯绍峰撒");
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
break;
}
default:
break;
}
} private void alterToast(String text) {
Toast.makeText(SdcardActivity.this, text, Toast.LENGTH_LONG).show();
}
}
Layout Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"> <Button
android:id="@+id/bt_check_mount_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="检查SDCard挂载状态"/> <Button
android:id="@+id/bt_output_sdcard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="写入到Sdcard文件"
/> <Button
android:id="@+id/bt_input_sdcard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读取Sdcard文件"
/> </LinearLayout>
Android-SDCard外部存储文件读写的更多相关文章
- Android 在外部存储读写文件
本文主要介绍android中如何在外部存储读写数据 sd卡的路径 sdcard:2.3之前的sd卡路径 mnt/sdcard:4.3之前的sd卡路径 storage/sdcard:4.3之后的sd卡路 ...
- 【转】Android SDCard操作(文件读写,容量计算)
android.os.Environment 提供访问环境变量 java.lang.Object android.os.Environment Environment 静态方法: 方法 : ...
- Android在外部存储空间中读写文件
一.外部存储的目录 1.2.3之前是/sdcard 2.4.3之前是在/mnt/sdcard 3.4.3之后是在/storage/sdcard 二.读写读写外部存储 1.直接写路径 File file ...
- android之外部文件存储和读取
这次借用上次读写内部存储的代码,只是对将更换文件的读写路径即可.这里需要对获取SDcard的读写权限. 一.AndroidManifest.xml 这里增加了对外部存储设备的读写权限 <?xml ...
- android 学习随笔二(读写文件)
在android读写文件 RAM:运行内存,相当于电脑的内存 ROM:内部存储空间,相当电脑硬盘,android手机必须有的 SD卡:外部存储空间,相当电脑的移动硬盘,不是必须的.手机如果内置16G存 ...
- Android—SDCard数据存取&Environment简介
1:Environment简介: Environment是android.os包下的一个类,谷歌官方文旦的解释为:Provides access to environment variables(提供 ...
- Android sdcard之read-only
AndroidManifest.xml是否加入了SDCard的权限设置 <!-- 创建与删除文件权限 --> <uses-permission android:name=" ...
- Android NFC M1卡读写&芯片卡读写(CPU卡读写)(RFID读写)
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/sgn5200/article/detai ...
- Android SDCard Mount 流程分析
前段时间对Android 的SDCard unmount 流程进行了几篇简短的分析,由于当时只是纸上谈兵,没有实际上的跟进,可能会有一些误导人或者小错误.今天重新梳理了头绪,针对mount的流程再重新 ...
随机推荐
- http协议及web框架
http协议简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本 ...
- Eclipse的Java Working set
1. 在 java perspective 点击 package explorer 的 倒三角 ,选择 Configurate Working Sets 新建Working Sets 或者 在 pac ...
- Redis实战——安装问题汇总
借鉴:https://www.cnblogs.com/liu2-/p/6914159.html 通用方法:迅速查看缺少的包的路径,并安装 yum provides *** 如 yum provides ...
- redis 开发与运维 学习心得1
主要是命令相关 第一章 初识Redis 1.redis是基于键值对的NoSQL. 2.redis的值可以是 string, hash, list, set, zset, bitmaps, hyperl ...
- SpringMVC前后台数据传递中Json格式的相互转换(前台显示格式、Json-lib日期处理)及Spring中的WebDataBinder浅析
两个方向: 一.前台至后台: Spring可以自动封装Bean,也就是说可以前台通过SpringMVC传递过来的属性值会自动对应到对象中的属性并封装成javaBean,但是只能是基本数据类型(int, ...
- STL源码剖析之组件
本篇文章开始,进行STL源码剖析的一些知识点,后续系列笔记全是参照<STL源码剖析>进行学习记录的 STL在现在的大部分项目中,实用性已经没有Boost库好了,毕竟STL中仅仅提供了一些容 ...
- fatal error C1083: 无法打开包括文件:“iostream.h”: No such file or directory
其实 <iostream.h>是c风格的,你可用,但注意格式: 要么是: #include <iostream> using namespace std; 在标准C++里 ...
- iOS学习之第二个View使用UITabBarViewController
前面有一篇博文iOS学习之Tab Bar的使用和视图切换 这是在AppDelegate里使用Tabbar,这样的程序打开就是TabbarView了,有时候我们需要给程序做一些帮助页面,或者登录页面,之 ...
- Unity iOS 项目的一种性能评测方法
[Unity iOS 项目的一种性能评测方法]
- windows下 apache,php,mysql,phpadmin集成化安装
1.appserv 直接下载安装, 2.linux环境下下载安装LAMP