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的流程再重新 ...
随机推荐
- Embarcadero RAD Studio 2016 Product Approach and Roadmap
delphi 2016 路线图 http://community.embarcadero.com/article/news/16211-embarcadero-rad-studio-2016-pro ...
- docker redis4.0 集群(cluster)搭建
前言 redis集群对于很多人来说非常熟悉,在前些日子,我也有一位大兄弟也发布过一篇关于在阿里云(centOS7)上搭建redis 集群的文章,虽然集群搭建的文章在网上很多,我比较喜欢这篇文章的地方是 ...
- 利用Console来学习、调试JavaScript
一 什么是 Console Console 是用于显示 JS和 DOM 对象信息的单独窗口.并且向 JS 中注入1个 console 对象,使用该对象 可以输出信息到 Console 窗口中. 二 ...
- 获取当前UnixTime的零点时间戳
最近有个需求,开屏广告每天只出一次. 思路为如果出了开屏广告,则记录当前时间,下次来的时候,读取当前时间和上一次出开屏的时间. 算一下是不是在同一天即可. 我们的第一个想法是将上次开屏时间和当前时间归 ...
- Linux实战教学笔记29:MySQL数据库企业级应用实践
第二十九节 MySQL数据库企业级应用实践 一,概述 1.1 MySQL介绍 MySQL属于传统关系型数据库产品,它开放式的架构使得用户选择性很强,同时社区开发与维护人数众多.其功能稳定,性能卓越,且 ...
- linux开机自检配置文件fstab变只读无法修改问题
控制linux开机自检的配置文件是/etc/fstab,在最近用的服务器中,发现fstab变成了只读权限,无法修改. 解决方法:RH5下,因磁盘改变,而导致系统停在Ctrl+d,此时需输入密码进入修改 ...
- 启动和关闭MySQL服务
停止mysql服务,说来简单,但不知道的话,还真是挠头.在这和mysql入门的同学们共享:) 正确方法是,进入mysql的bin目录下,然后执行./mysqladmin -uroot -p shut ...
- Python_12-线程编程
1.1 Python中的线程使用1.1.1 函数式1.2 创建threading.Thread的子类来包装一个线程对象1.2.1 threading.Thread类的使用1.3 线程 ...
- NPC问题及其解决方法(回溯法、动态规划、贪心法、深度优先遍历)
NP问题(Non-deterministic Polynomial ):多项式复杂程度的非确定性问题,这些问题无法根据公式直接地计算出来.比如,找大质数的问题(有没有一个公式,你一套公式,就可以一步步 ...
- Opencv Shi-Tomasi角点检测
#include <iostream>#include <opencv2/opencv.hpp> using namespace std;using namespace cv; ...