<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. Oracle 创建表空间借鉴 保留,占版权留言告知

    /*分为四步 */ /*第1步:创建临时表空间 */ create temporarytablespace user_temp tempfile 'D:\oracle\oradata\Oracle9i ...

  2. 关于jquery中的parent的认定

    <li><label class='checkbox inline'><input type='checkbox' name='type[]' value='{$item ...

  3. Configuring Transitive IPMP on Solaris 11

    http://www.tokiwinter.com/configuring-transitive-ipmp-on-solaris-11/ We all know the pain of configu ...

  4. xe8 单元别名

    xe8 单元别名 Unit scope F2613 Unit 'Graphics' not found. Project>Option>Unit scope names> vcl.I ...

  5. delphi XE8 Android SDK SET

    delphi XE Berlin Android SDK SET RAD>Tools>Options>SDk Manager> https://dl-ssl.google.co ...

  6. QT与HALCON(入门)

    #include "qtdesign.h" #include <QtGui/QApplication> #include "halconcpp.h" ...

  7. ssm框架整合之Spring4+SpringMVC+Mybaties3之配置文件如何配置及内容解释--可直接拷贝使用--不定时更改之2017/4/29

    经测试,需注意以下几点: 1,controller的自动扫描不能放在applicationContext.xml中,要放在spring-mvc.xml中.同样是<context:componen ...

  8. 201671010140. 2016-2017-2 《Java程序设计》java学习第十一周

     java学习第十一周     本周,进行了java集合方面的知识,在博客园的帮助下,我的课前预习更有条理性,重点明确,本周的课堂反应明显更好了,首先,梳理一下本周知识点.  Collection   ...

  9. 简单HttpClientUtils工具类

    package com.zy.utils; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; import o ...

  10. css实现文本过长时自动添加省略号

    1. 效果 2. Html <div id="main_app_content" class="container"> <div class= ...