<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外部存储文件读写的更多相关文章

  1. Android 在外部存储读写文件

    本文主要介绍android中如何在外部存储读写数据 sd卡的路径 sdcard:2.3之前的sd卡路径 mnt/sdcard:4.3之前的sd卡路径 storage/sdcard:4.3之后的sd卡路 ...

  2. 【转】Android SDCard操作(文件读写,容量计算)

    android.os.Environment 提供访问环境变量 java.lang.Object     android.os.Environment   Environment 静态方法: 方法 : ...

  3. Android在外部存储空间中读写文件

    一.外部存储的目录 1.2.3之前是/sdcard 2.4.3之前是在/mnt/sdcard 3.4.3之后是在/storage/sdcard 二.读写读写外部存储 1.直接写路径 File file ...

  4. android之外部文件存储和读取

    这次借用上次读写内部存储的代码,只是对将更换文件的读写路径即可.这里需要对获取SDcard的读写权限. 一.AndroidManifest.xml 这里增加了对外部存储设备的读写权限 <?xml ...

  5. android 学习随笔二(读写文件)

    在android读写文件 RAM:运行内存,相当于电脑的内存 ROM:内部存储空间,相当电脑硬盘,android手机必须有的 SD卡:外部存储空间,相当电脑的移动硬盘,不是必须的.手机如果内置16G存 ...

  6. Android—SDCard数据存取&Environment简介

    1:Environment简介: Environment是android.os包下的一个类,谷歌官方文旦的解释为:Provides access to environment variables(提供 ...

  7. Android sdcard之read-only

    AndroidManifest.xml是否加入了SDCard的权限设置 <!-- 创建与删除文件权限 --> <uses-permission android:name=" ...

  8. Android NFC M1卡读写&芯片卡读写(CPU卡读写)(RFID读写)

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/sgn5200/article/detai ...

  9. Android SDCard Mount 流程分析

    前段时间对Android 的SDCard unmount 流程进行了几篇简短的分析,由于当时只是纸上谈兵,没有实际上的跟进,可能会有一些误导人或者小错误.今天重新梳理了头绪,针对mount的流程再重新 ...

随机推荐

  1. 爬虫——回顾HTTP 协议

    一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文 ...

  2. LUA和C#关于字符串中\0的处理

    LUA中: local s = "hello\0\0dddddddd" print(s) --hello C#中: string s = "hello\0\0dddddd ...

  3. Java设计模式学习06——静态代理与动态代理(转)

    原地址:http://blog.csdn.net/xu__cg/article/details/52970885 一.代理模式 为某个对象提供一个代理,从而控制这个代理的访问.代理类和委托类具有共同的 ...

  4. Python的常见异常处理

    一.异常处理 1.异常的概念 异常是错误发生的信号,一旦程序出错,并且程序没有处理这个错误,那个就会抛出异常,并且程序的运行随即终止. 2.错误种类 分两种,第一种是:语法错误,这种错误,根本过不了p ...

  5. bugfree调试

    最近项目用到bugfree  ,一直不能用,原来是session目录的文件权限有问题.

  6. $(window).load()和$(document).ready()

    一.前言 我们在编写前端代码的js文件时,往往是会先写一个$(function(){}),然后才会在大括号里面继续写我们自己的代码.当时并不能理解为什么要添加这样一个东西,只是把它当做一个标签一样添加 ...

  7. ubuntu18(笔记本) faster-rcnn实例程序运行

    luo@luo-ThinkPad-W540:TensorflowProject$ source activate flappbird (flappbird) luo@luo-ThinkPad-W540 ...

  8. Openssl verify命令

    一.简介 verify命令对证书的有效性进行验证,verify 指令会沿着证书链一直向上验证,直到一个自签名的CA 二.语法 openssl verify [-CApath directory] [- ...

  9. meshconverters

    https://github.com/RobotLocomotion/meshConverters meshconverters $ mkdir build && cd build $ ...

  10. JavaScript 与JQuery 常用方法比较

    http://drupalchina.cn/content/javascript-yu-jquery-chang-yong-fang-fa-bi-jiao 1.加载DOM区别 JavaScript: ...