Android手机内存,SD卡读写

在手机上有两个存储位置

1 手机内部存储

2 SD卡

文件操作模式:

是否允许外部访问?

文件以覆盖/追加方式写?

  • 手机内存读写
//保存文件到手机内存
public void save(String fileName,String content) throws IOException{
  FileOutputStream fos = context.openFileOutput("a.txt", Context.MODE_PRIVATE);
  fos.write(content.getBytes());
  fos.close();
}

**Context.MODE_PRIVATE 只允许本应用访问,覆盖方式

getBytes()默认使用UTF-8

// 从手机内存读取文件
public String read(String fileName) throws IOException {
  ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 向内存输入字节数据的流
  FileInputStream fis = context.openFileInput(fileName);
  byte[] buffer = new byte[1024];
  int len = 0;
  while ((len = fis.read(buffer)) != -1) {
    baos.write(buffer, 0, len);
  }
  byte[] data = baos.toByteArray();
  return data.toString();
}

**文件默认保存和读取位置:/data/data/<包>/files

文件操作模式

Context.MODE_PRIVATE:(默认)只能被本应用访问,覆盖原文件

Context.MODE_APPEND:追加

Context.MODE_WORLD_READABLE当前文件可被其他文件读取

Context.MODE_WORLD_WRITEABLE... 可被其他文件写入

  • SD卡读写
// 判断SD卡状态,插入可读写
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
  service.saveToSDCard(fileName, content);
} else {
  // sdcard不存在时,保存到手机内存
  service.save(fileName, content);
}

//保存文件到SD卡
public void saveToSDCard(String fileName, String content) throws IOException{
  File file = new File(Environment.getExternalStorageDirectory(),fileName);
  FileOutputStream fos = new FileOutputStream(file);
  fos.write(content.getBytes());
  fos.close();
}

权限:

从sd卡读取数据不需要权限

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

**android 2.2以前 /sdcard 以后 /mnt/sdcard

不要使用绝对路径 :Environment.getExternalStorageDirectory()

时间: 2024-10-24 15:30:31

Android手机内存,SD卡读写的相关文章

Android中向SD卡读写数据,读SD卡和手机内存

package com.example.sdoperation; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import android.support.v7.app.Actio

Android手机外置SD卡(TF卡)的获取方法

Android手机上的外置SD卡,起初的时候,即在Android出世的前几年,那时手机的存储是十分有限的,不像现在到处可见16G.32G和64G的存储,因而那时候的手机有的厂商允许插入外置的SD卡,此时这张卡仍处于手机的扩展部分.后来,随着手机的发展以及存储能力的增加,这张外置SD卡,逐渐成为了手机的一部分,不再允许可挺拔了,当然现在依然有的手机允许对存储进行拓展,比如三星等. 那张拓展的存储卡,现在叫做TF卡,且不是所有的手机都支持它,但是有时候有些奇葩需求偏要优先存储在TF卡里面,这叫不得不

Android Rom分区 与 SD卡读写

1.Rom分区 在Android中,对数据的保护是很严密的.除了放在SD卡中的数据,一个应用所拥有的数据库.文件等内容都是不允许其他应用直接访问的,这一部分数据都是在/data/data里面. 这里所说的SD卡是逻辑上的SD卡,比如我现在用的galaxy s4 的Rom是16g,Android系统会把这16g分成两个部分,一个是系统和应用程序数据区,另一个就是虚拟的SD卡,可以称它为内置SD卡. 我们平时外插进手机的是TF卡,简称Micro SD卡,具体的可以参考百度. 三星手机默认的内置SD卡

Android下获取手机和SD卡的总空间和可用空间

获取SD卡的总空间和可用空间 File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long totalBlocks = stat.getBlockCount(); long availableBlocks = stat.getAvailableBlocks(); long tota

单片机SD 卡读写

1.迄今为止看到的最详细的关于SD卡SPI mode的分析和代码 http://elm-chan.org/docs/mmc/mmc_e.html 2.转载http://blog.csdn.net/ming1006/article/details/7281597 现在我们手机的内存卡多为Micro SD卡,又叫TF卡,所以Micro SD卡比SD卡常见.自己曾经也想写写SD卡的读取程序,但又不想特地再去买个SD卡,这时想起手机内存卡不是和SD卡很像吗?在网上查了以后发现SD卡和Micro SD卡其

第36章 SDIO—SD卡读写测试

第36章     SDIO-SD卡读写测试 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx参考手册>.<STM32F4xx规格书>.库帮助文档<stm32f4xx_dsp_stdperiph_lib_um.chm>以及SD简易规格文件<Physical Layer Simplified Specificatio

给android模拟器添加SD卡

如何给android模拟器创建SD卡呢 我们在命令行中输入 mksdcard 512M D:\Program Files (x86)\Android\sdcard.img 这样就在我们的D:\Program Files (x86)\Android目录中有了个sdcard.img 大小为512M Sd卡创建完毕,下一步就是在eclipse中设置下,让模拟器启动的时候加载这个SD卡 点击 window-preferences 然后在 android->launch中的 default emulato

Android 虚拟机安装SD卡

在cmd命令行下,进入platform-tools目录下. 1.创建sdcard mksdcard -l mycard 256M E:\android\myCards\mysdcard.img 这样就在该目录下创建好了一个SD卡的虚拟镜像.其中-l命令行参数表示虚拟磁盘的卷标号. 256M是创建的虚拟sdcard的大小,在9M-1023M之间 2.激活sdcard 命令行输入:emulator -avd Android4.0 -sdcard G:\android\myCards\mysdcard

Android模拟器使用SD卡

在Android的应用开发中经常要用到与SD卡有关的调试,本文就是介绍关于在Android模拟器中SD卡的使用 一.      准备工作 在介绍之前首先做好准备工作,即配好android的应用开发环境 l  JDK 1.6+ l  Android SDK 1.6 (这个版本无关紧要,后面在升级) l  Android SDK Setup l  Eclipse IDE for Java Developers 详细配置方法请参考:http://blog.sina.com.cn/s/blog_4de0