android-数据存储之外部file存储(sdcard)

一、基础概要

  1、说明:

    1>应用程序运行用到的数据文件可以保存到sd卡中

    2>文件类型:任意

    3>数据保存路径:

      路径1:/storage/sdcard/Android/data/packageName/files     其它应用可以访问,应用卸载时删除

      路径2:/storage/sdcard/xxx/    (表示自己创建的文件--xxx)     其它应用可以访问,应用卸载时不会被删除

  2、相关API

    Environment 操作sd卡工具类:

      ---得到sd卡状态:Environment.getExternalStorageState()

          sd卡可读写的挂载状态值:Environment.MEDIA_MOUNTED

      ---得到sd卡路径:Environment.getExternalStorageDirectory()

    context.getExternalFilesDir():

      ---得到 /mnt/sdcard/Android/data/package_name/files/xxx.txt

    

    操作sd卡的权限:

      ---android.permission.WRITE_EXTERNAL_STORAGE  属于写的权限,但加上后也可读。

二、开发步骤(路径1)

1、写数据

  1>判断sd卡状态,如果是挂载的状态继续

  2>获取输入文件名/内容

  3>得到指定文件的OutputStream:

    .得到sd卡下的files路径

    .组成完整路径

    .创建FileOutputStream

  4>写数据

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
   
      String fileName="xrk";
      String fileContent="我不是向日葵";
      String filesPath=getExternalFilesDir(null).getAbsolutePath();
      String filePath=filesPath+"/"+fileName;
      FileOutputStream fos=new FileOutputStream(filePath);
      fos.write(fileContent.getBytes("utf-8"));
      fos.close();
      Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
  }else{
   Toast.makeText(MainActivity.this, "保存是啊比", Toast.LENGTH_SHORT).show();
  }

2、读数据:

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
   
      String fileName="xrk";
      String filesPath=getExternalFilesDir(null).getAbsolutePath();
      System.out.println("iueiudshcs"+filesPath);
      String filePath=filesPath+"/"+fileName;
      FileInputStream fis=new FileInputStream(filePath);
      ByteArrayOutputStream baos=new ByteArrayOutputStream();
      byte[] buffer=new byte[1024];
      int len=-1;
      while((len=fis.read(buffer))!=-1){
       baos.write(buffer, 0, len);
      }
      String content=baos.toString();
      
      
      Toast.makeText(MainActivity.this, "读取成功"+content, Toast.LENGTH_SHORT).show();
  }else{
   Toast.makeText(MainActivity.this, "读取失败", Toast.LENGTH_SHORT).show();
  }

 

三、开发步骤(路径2) 

1、写数据

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
   
      String fileName="谢荣康.txt";
      String fileContent="我不是向日葵";
      //得到指定文件的输出流
      String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();
      File file=new File(sdPath+"/atguigu");
      if (!file.exists()) {
    file.mkdirs();//创建文件夹
   }
      String filePath=sdPath+"/atguigu/"+fileName;
      String filesPath=getExternalFilesDir(null).getAbsolutePath();
      System.out.println("iueiudshcs"+filesPath);
      FileOutputStream fos=new FileOutputStream(filePath);
      
      fos.write(fileContent.getBytes("utf-8"));
      fos.close();
      Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
  }else{
   Toast.makeText(MainActivity.this, "保存是啊比", Toast.LENGTH_SHORT).show();
  } 

2、读数据:

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
   
      String fileName="谢荣康.txt";
      String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();
      String filePath=sdPath+"/atguigu/"+fileName;
      FileInputStream fis=new FileInputStream(filePath);
      ByteArrayOutputStream baos=new ByteArrayOutputStream();
      byte[] buffer=new byte[1024];
      int len=-1;
      while((len=fis.read(buffer))!=-1){
       baos.write(buffer, 0, len);
      }
      String content=baos.toString();
      fis.close();
      
      Toast.makeText(MainActivity.this, "读取成功"+content, Toast.LENGTH_SHORT).show();
  }else{
   Toast.makeText(MainActivity.this, "读取失败", Toast.LENGTH_SHORT).show();
  }

  

时间: 2024-11-07 06:49:04

android-数据存储之外部file存储(sdcard)的相关文章

【Android】14.2 外部文件存储和读取

分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 1.基本概念 内部存储的私有可用存储空间一般都不会很大,对于容量比较大的文件,例如视频等,应该将其存储在外部存储设备(SD卡)上. 注意,不要将手机内存和手机内插入的存储卡(手机卡.SD卡)混淆在一起,内存是不能持久存储的,一关机所有信息就全部丢失了,而内部存储(移动经销商卖的手机卡,容量小,但是没有它打不了电话).外部存储(SD卡,容量大,各种文件都能保存)都是可以持久存储的设备,因此才叫文件存储. 可以通过

数据存储——手机外部文件存储

一.特点 1.把文件存储在手机外部存储空间(SD卡)里 2.存储的是任意类型的文件 3.使用IO输入输出流操作文件 4.文件路径 1-SD卡根目录/Android/data/包名/files/[ 文件类型],应用卸载后,数据同时被删除: 2-SD卡根目录/,应用卸载之后,数据不会被同时删除. 5.需要声明权限 1-android.permission.WRITE_EXTERNAL_STORAGE,写入文件: 2-MOUNT_UNMOUNT_FILESYSTEMS,创建和删除文件. 二.API 1

Android学习笔记十七.Android数据存储与IO.File存储常用API

Android通过一套完整的I/O流体系,包括FileInputStream.FileOutputStream等,通过这些I/O流来访问手机存储上的文件. 一.API 1.File (1)功能:该类提供一些有限的功能-获取或设置文件的权限.文件类型.最后依次修改时间等,通常它所代表的文件名(包含路径)将被转换为UTF-8字节序列被使用. (2)继承关系 java.lang.Object ? java.io.File (3)构造方法  File(File dir, String name):构造一

从零开始学android<数据存储(4)Sqlite数据库存储.三十八.>

从前几章我们分别学习了属性文件存储输数据,内储存存储数据,和外部储存存储数据,今天我们来学习一下android 轻量级数据库Sqlite数据库的数据存储 首先必须了解SQLiteOpenHelper SQLiteDatabase类本身只是一个数据库的操作类,但是如果要想进行数据库的操作,还需要一个android.database.sqlite.SQLiteOpenHelper类帮助下才可以取得进行,但是,SQLiteOpenHelper类是一个抽象类,所以要使用的时候需要定义其子类,并且在子类中

Android学习笔记 --- 数据存储与访问 (File,sdcard,sharedpreferences,sqlite)

一.使用文件进行数据存储 1.context.openFileOutput()方法  写入文件内容 在上下文context中 openFileOutput方法可以用于把数据输出到文件中 示例代码: public static void fileStorage(Context context){ try { FileOutputStream fos = context.openFileOutput("filedata.txt", context.MODE_PRIVATE); fos.wr

Android数据存储之File

Android使用与其他平台类似的基于磁盘文件系统(disk-based file systems),上篇文章通过SharedPerference来进行数据存储,这次可以使用File.File 对象非常适合用来读写那种流式顺序的数据,可以用来读写图片文件或者是网络中交换的数据. 存储位置 所有的Android设备都有两个文件存储区域:"internal" 与 "external" 存储. 那两个名称来自与早先的Android系统中,那个时候大多数的设备都内置了不可变

【Android数据存储】- File

个人学习整理,如有不足之处,请不吝指教.转载请注明:@CSU-Max 读写本应用程序数据文件夹中的文件 此种方法读写的文件在/data/data/<应用程序包名>中 android 中提供了 openFileInput(String fileName) 和 openFileOutput(String fileName, int mode) 两个方法来读取本应用程序数据文件夹中的文件和向其写入. openFileInput(String fileName)    打开文件输入流 openFile

从零开始学android&lt;数据存储(3)External Storage外部存储.三十七.&gt;

所谓的外部存储External Storage就是将数据文件保存在SD卡上. 1.但是在保存数据时需要先对SD卡的状态进行判断. 使用Environment.getExternalStorageState()可以SD卡的运行状态 分别有一下的状态 MEDIA_UNKNOWN, MEDIA_REMOVED, MEDIA_UNMOUNTED, MEDIA_CHECKING, MEDIA_NOFS, MEDIA_MOUNTED, MEDIA_MOUNTED_READ_ONLY, MEDIA_SHARE

android数据存储_外部存储

源码下载(免下载积分):下载 外部存储并不是一定可以访问的,例如外部存储挂载到电脑上是,或者是SD Card作为外部存储,被移除是,因此在访问外部存储时,一定要保证外部存储是可以获得的.判断外部存储是否已经挂载到了手机上可以这样判断: //判断外部存储是否可以访问,并且可以读写 private boolean isExternalStorageWritable() { String state = Environment.getExternalStorageState(); if (Enviro