关于读、写SD卡的操作

1.点击按钮将assets文件夹中的内容复制到SD卡中。

private void copyToSD() {

// 检测SD卡是否挂载  Environment.MEDIA_MOUNTED 表示被挂载

// Environment.getExternalStorageState() 将返回sd卡的状态

if(! Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {

Toast.makeText(this, "不能读取sd卡", Toast.LENGTH_LONG).show();

return;

}

// 获取sd卡的根位置

String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();

Log.e("sdPath" , sdPath);

// 文件复制

String path = sdPath + File.separator + "info" ;

String fileName = "notepad.txt";

// 判断写入的路径是否存在

File pathFile = new File(path);

if(!pathFile.exists() || !pathFile.isDirectory()) {

pathFile.mkdirs(); //创建的是文件目录

}

byte[] readContent = null;

// 读取数据源,得到一个byte[]

try {

InputStream is = getAssets().open("java_notepad");

ByteArrayOutputStream bos = new ByteArrayOutputStream(); //减少打开文件的次数

byte[] cache = new byte[1024];

int count ;

while((count = is.read(cache, 0, 1024)) != -1) {

bos.write(cache, 0, count);   // 写入内存

}

readContent = bos.toByteArray();   // 将内存数据转入byte数组

is.close();

bos.close();

} catch (Exception e1) {

e1.printStackTrace();

Toast.makeText(this, "读取数据源失败!", Toast.LENGTH_LONG).show();

return;

}

// 创建一个输出流

try {

if(null == readContent || readContent.length == 0) {

Toast.makeText(this, "数据源没有数据!", Toast.LENGTH_LONG).show();

return;

}

FileOutputStream fos = new FileOutputStream(path + File.separator + fileName);

fos.write(readContent);

fos.close();

Toast.makeText(this, "复制成功!", Toast.LENGTH_LONG).show();

} catch (Exception e) {

e.printStackTrace();

Toast.makeText(this, "复制到sd卡失败!", Toast.LENGTH_LONG).show();

return;

}

}

2.向SD卡中写入数据

private void writeToSD() {

// 判断是否挂载

if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {

Toast.makeText(this, "不能读取sd卡", Toast.LENGTH_LONG).show();

return;

}

// 得到sd卡的根路径

String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();

// 写入数据

String path = sdPath + File.separator + "info";

String fileName = "temp.txt";

// 判断写入的路径是否存在

File pathFile = new File(path);

if(!pathFile.exists() || !pathFile.isDirectory()) {

pathFile.mkdirs();

}

// 写入

try {

FileWriter fw = new FileWriter(path + File.separator + fileName); //因为要直接写入字符,所以可以用writer

fw.write("Hello\n");

fw.write("张老师,你咋还不来内!我们都想念你。。。。");

fw.close();

Toast.makeText(this, "写入成功!", Toast.LENGTH_LONG).show();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

Toast.makeText(this, "写入数据到sd卡失败!", Toast.LENGTH_LONG).show();

return;

}

}

3.从SD卡中读取数据

private void readFromSD() {

// 读取sd卡数据 ==> OutputStream ==> byte[]

// 判断是否挂载

if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {

Toast.makeText(this, "不能读取sd卡", Toast.LENGTH_LONG).show();

return;

}

// 得到sd卡的根路径

String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();

// 读取数据

String fileName = sdPath + File.separator + "info" + File.separator + "temp.txt";

File file = new File(fileName);

if(!file.exists() || !file.isFile() ) {

Toast.makeText(this, "不能读取sd卡文件!" , Toast.LENGTH_LONG).show();

return;

}

// 读取数据源,得到一个byte[]

byte[] readContent = null;

try {

InputStream is = new FileInputStream(file);

ByteArrayOutputStream bos = new ByteArrayOutputStream();

byte[] cache = new byte[1024];

int count ;

while((count = is.read(cache, 0, 1024)) != -1) {

bos.write(cache, 0, count);   // 写入内存

}

readContent = bos.toByteArray();   // 将内存数据转入byte数组

is.close();

bos.close();

} catch (Exception e1) {

e1.printStackTrace();

Toast.makeText(this, "读取数据源失败!", Toast.LENGTH_LONG).show();

return;

}

TextView tv = (TextView) findViewById(R.id.show);

if(null == readContent || readContent.length == 0) {

tv.setText("没有读取数据!");

}

else {

try {

tv.setText(new String(readContent , "utf-8"));

} catch (Exception e) {

e.printStackTrace();

}

}

}

对SD卡操作的一些封装方法:

public class SDTool {

// 成员常量

public static final String SD_PATH = Environment.getExternalStorageDirectory().getAbsolutePath();

// 判断sd卡是否可用

public static boolean isAvailable() {

return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) ;

}

// 读取数据,读出数据放到byte数组里面。

public static byte[] readFile(String path , String fileName) {

if(!isAvailable()) {

return null;

}

// 判断文件是否存在

File file = new File(SD_PATH + File.separator + path + File.separator + fileName);

if(!file.exists() || !file.isFile()) {

return null;

}

// 读取文件内容

byte[] content = null;

try {

InputStream is = new FileInputStream(file);

ByteArrayOutputStream bos = new ByteArrayOutputStream();

byte[] temp = new byte[1024];

int size ;

while((size = is.read(temp, 0, 1024)) != -1) {

bos.write(temp, 0, size);

}

content = bos.toByteArray();

bos.close();

is.close();

return content;

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

return null;

}

}

// 写入数据

public static boolean writeFile(String path , String fileName , String content , boolean isAppend) {

if(!isAvailable()) {

return false;

}

// 判断路径是否存在

File file = new File(SD_PATH + File.separator + path);

if(!file.exists() || !file.isDirectory()) {

file.mkdirs();

}

// 写入数据

try {

FileWriter fw = new FileWriter(SD_PATH + File.separator + path + File.separator + fileName , isAppend) ;

fw.write(content);

fw.close();

return true;

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return false;

}

}

public static boolean writeFile(String path , String fileName , byte[] content , boolean isAppend) {

if(!isAvailable()) {

return false;

}

// 判断路径是否存在

File file = new File(SD_PATH + File.separator + path);

if(!file.exists() || !file.isDirectory()) {

file.mkdirs();

}

// 写入数据

try {

FileOutputStream fw = new FileOutputStream(SD_PATH + File.separator + path + File.separator + fileName , isAppend) ;

fw.write(content);

fw.close();

return true;

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return false;

}

}

public static boolean writeFile(String path , String fileName , Object content , boolean isAppend) {

return writeFile(path, fileName, content.toString() , isAppend);

}

// 删除文件或目录

public static boolean deleteFile(String fileName) {

return new File(SD_PATH + File.separator + fileName).delete();

}

}

关于读、写SD卡的操作,布布扣,bubuko.com

时间: 2024-11-10 14:06:04

关于读、写SD卡的操作的相关文章

Adroid学习之SD卡的操作(1)

随着android的学习我们通过Context的openFileInput或是openFileOutput来打开文件的输入输出流时,程序锁打开的都是应用程序的数据文件夹里面的文件,这样所存储的文件的大小可能比较有限——毕竟手机内置的存储空间是有限的. 为了更好的存取应用程序的大文件数据,应用程序需要读写SD卡上的文件.通过SD卡,大大的扩充了手机的存储能力.所以咱们就先来学习如何读写sd卡上的文件. 读.写SD卡上的文件通常有以下几个步骤:    (1)调用Environment的getExte

Android入门开发之SD卡读写操作(转)

SD卡的读写是我们在开发android 应用程序过程中最常见的操作.下面介绍SD卡的读写操作方式: 1. 获取SD卡的根目录 [java] view plaincopy String  sdCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath(); 2. 在SD卡上创建文件夹目录 [java] view plaincopy /** * 在SD卡上创建目录 */ public File createDirOnSDC

ubuntu下制作tiny6410烧写SD卡

被这一件小事折腾了三天,原来是因为我用的是储存卡+卡套的方式进行烧录,一直不成功,结果今天借了一个大SD卡就成功了,记录一下烧写过程. tiny6410光盘里面并没有提供一键烧写SD卡的脚本,但是烧写过程却足够简单,几个命令下去就烧写成功了. 首先准备一个已经备份好资料的SD卡 将光盘里面提供的superboot2011xxxx.bin烧进去 sudo dd iflag=dsync oflag=dsync if=xxx/superboot2011xxxx.bin of=/dev/sdb seek

linux下sd卡的操作(fdisk)

当你拿到一张sd卡,需要在linux环境下格式化.分区,修改参数的时候,请看过来. ubuntu虚拟机环境下 1,插入,用力点,因为有可能接触不良,导致电脑不识别. 2,cat /proc/partions 或者fdisk -l    (有些可能需要进入获得管理员权限,deei~命令前+sudo就行) 比如:cat /proc/partitions major minor  #blocks  name 2        0          4 fd0   8        0  1677721

android中对sd卡的 操作文件问题 创建目录 创建文件到指定目录

步骤 1 获取sd卡的路径 File root =Environment.getExternalStorageDirectory(); 2 确定要写文件的路径 String path =root.getAbsolutePath()+"/test2"+"/test3": 3 再把路径转化为file File file =new File(path); 4创建目录 file.mkdir(); 5在上述指定的目录写指定的文件 File file1 = new File(f

zedboard烧写SD卡启动linux镜像

1. 先把SD卡格式化,然后把镜像文件拷贝到SD卡,下面应该是没有文件系统的 2. 插上SD卡,Zedboard设置启动模式,有5个跳线帽,配置如下,上电启动 3. 看下串口的输出 原文地址:https://www.cnblogs.com/429512065qhq/p/8782601.html

安卓SD卡的操作

/** * 得到常用路径 */ public void getDir(){ // /mnt/sdcard File root=Environment.getExternalStorageDirectory(); // /system File root=Environment.getRootDirectory(); // /cache File root=Environment.getDownloadCacheDirectory(); // /data File root=Environment

Android数据存储之SD卡

为了更好的存取应用程序的大文件数据,应用程序需要读. 写SD卡上的文件.SD卡大大扩充手机的存储能力. 操作SD首先要加权限: <!--在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!-- 往SDCard写入数据权限 --> <uses-permission android:name=&q

读、写SD上的文件请按如下步骤进行

1.调用Environment的getExternalStorageState()方法判断手机上是否插入了SD卡,并且应用程序具有读写SD卡的权限.例如使用如下代码//Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)2.调用Environment的getExternalStorageDirectory()方法来获取外部存储器,也就是SD卡的目录.3.使用FileInputStream.FileOutpu