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

分类:C#、Android、VS2015;

创建日期:2016-02-27

一、简介

1、基本概念

内部存储的私有可用存储空间一般都不会很大,对于容量比较大的文件,例如视频等,应该将其存储在外部存储设备(SD卡)上。

注意,不要将手机内存和手机内插入的存储卡(手机卡、SD卡)混淆在一起,内存是不能持久存储的,一关机所有信息就全部丢失了,而内部存储(移动经销商卖的手机卡,容量小,但是没有它打不了电话)、外部存储(SD卡,容量大,各种文件都能保存)都是可以持久存储的设备,因此才叫文件存储。

可以通过AOD模拟器指定要创建的SD卡的容量,具体见第2章的介绍。

下面是存储在SD卡上的常用文件夹:

  • Alarms:保存用于警告的音频声音文件(audio files)。
  • Dcim:保存相机拍摄的图片文件和视频文件(pictures and videos)。
  • Downloads:保存用户下载的各种类型的文件。
  • Movies:保存媒体浏览器可搜索到的电影文件。
  • Music:保存媒体浏览器可搜索到的音乐文件。
  • Notifications:保存用于通知的音频文件,例如短信通知等。
  • Pictures:保存媒体浏览器可搜索到的图片文件。
  • Podcasts:保存博客文件。
  • Ringtones:保存手机铃声音频文件。

注意:在Android 6.0中,必须提供外部存储的读写权限才能对SD卡文件夹下的文件进行操作。

通过Environment类的静态属性可指定SD卡上的这些文件夹类型。

调用GetExternalStorgeState方法可检测SD卡的状态。使用外部存储(SD卡)之前,最好先判断它是否可用,如果可用,直接通过普通的文件操作对其进行读写即可。

2、如何将文件复制到模拟器的SD卡上

找到C:\Users\你的用户名\.android\avd\Galaxy_Api23.avd\sdcard.img,用虚拟光驱软件(比如UltraISO)打开这个文件,然后复制硬盘上的文件,将其粘贴到SD卡对应的目录下,保存即可。

二、示例2运行截图

运行后,在模拟器上查看SD卡上的Download文件夹,就会发现已经写入了a1.txt文件。

三、主要设计步骤

1、检查对外部存储的读写权限

外部存储需要用户赋予对应的读写权限才可以通过程序读取和写入。

鼠标双击Properties文件夹,在弹出的窗口中,查看是否已经选中外部存储的写权限(WRITE_EXTERNAL_STORAGE),如果没有选中,选中它。

由于第3章的例子中已经赋予了写权限,因此你看到的应该是已经选中了。另外,如果用户给应用程序赋予了对外部存储的写权限,那么也意味着同时给这个应用程序赋予了读权限(READ_EXTERNAL_STORAGE),因此读权限不需要再选中。

2、添加ch1402_Main.axml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Button
        android:id="@+id/MyButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="写入文件到SD卡的Download文件夹" />
</LinearLayout>

3、添加ch1402MainActivity.cs文件

using Android.App;
using Android.OS;
using Android.Widget;

namespace MyDemos.SrcDemos
{
    [Activity(Label = "【例14-2】外部文件存取")]
    public class ch1402MainActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.ch1402_Main);

            Button button = FindViewById<Button>(Resource.Id.MyButton);
            button.Click += delegate
            {
                string rootDir = Android.OS.Environment.ExternalStorageDirectory.Path;
                string downloadDir = Android.OS.Environment.DirectoryDownloads;
                string filePath = $"{rootDir}/{downloadDir}/a1.txt";
                if (Android.OS.Environment.ExternalStorageState == Android.OS.Environment.MediaMounted)
                {
                    string text = "Hello,张三!";
                    System.IO.File.WriteAllText(filePath, text, System.Text.Encoding.UTF8);
                    Toast.MakeText(this, $"文件已写入到:\n{filePath}", ToastLength.Long).Show();
                }
            };
        }
    }
}
时间: 2024-08-04 04:05:14

【Android】14.2 外部文件存储和读取的相关文章

【Android】14.1 内部文件存储和读取

分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 内部存储是指将应用程序建立的私有文件保存在内部存储器(移动经销商卖的那种容量较小的手机卡)中. 应用程序可通过OpenFileInput方法和OpenFileOutput方法读取内部存储设备上的这些文件. 1.OpenFileOutput方法 该方法打开应用程序私有文件,为写入设备做准备.默认情况下,写入的文件会覆盖同名的原文件.如果要打开的文件不存在,则创建一个新文件. 该方法的语法格式如下: public

Android中的File文件存储及读取file中的Bitmap

今年看了下android的文件存储,大致和java实现差不多 android提供了如下两个方法来打开本应用程序的数据文件的IO流: FileInputStream  openFileInput(fileName);  //输入流 FileOutputStream outputStream = openFileOutput(fileName, MODE_PRIVATE);  //输出流 打开输出流的方法的第二个是表示打开文件的mode,大概有一下几种: MODE_PRIVATE : 该文件只能被当

手机外部文件存储(SD卡存储)

package com.atguigu.l04_datastorage; import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException; import android.app.Activity;

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

一.特点 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开发中关于资源文件的存储操作.对于Android资源也是非常重要的,主要包括文本字符串(strings).颜色(colors).数组(arrays).动画(anim).布局(layout).图像和图标(drawable).音频视频(media)和其他应用程序使用的组件. 在Android开发中,资源文件是我们使用频率最高的,无论是string,drawable,还是layout,这些资源都是我们经常使用到的,而且为我们的开发提供了很多方便,不过我们平时接触的资源目录一般都

Android 数据缓存-文件存储

Android APP开发过程中,我们通常会加入缓存模块.缓存即在本地保存APP的一些数据,大部分是将网络请求的数据进行本地保存,这样在缓存数据有效期内就可以直接使用缓存数据,降低了APP和服务器的压力,也极大提升了用户体验.Android数据缓存既可以以数据表的形式进行保存,也可以以文件的形式进行缓存.这里我主要通过缓存文件存储数据,并在APP下一次启动时读取. Usage 整个Cache模块的设计思想很简单,每个缓存数据都对应一个key,每个缓存数据又会被存到以此key命名的文件中,需要时直

【Android】把外部文件拷贝的AVD安卓模拟器上的sdcard上,并且在AVD中浏览sdcard的文件

首先,实现这一切的大前提是,你的AVD安卓模拟器,在启动之前,有设置好sdcard的大小,如下图.同时,你的AVD安卓模拟器,要处于启动状态.否则无法执行如下的操作. 这里以<[Android]利用adt-bundle在Windows下轻松搭建Android开发环境与Hello world>(点击打开链接)在Windows中安装出来的安卓开发环境为例. 一.把外部文件拷贝的AVD安卓模拟器上的sdcard上 1.在AVD成功开机之后,你先要通过Window->Open Persperct

android之文件存储和读取

一.权限问题 手机中存储空间分为ROM和SDcard,ROM中放着操作系统以及我们安装的APP,而sdcard中一般放置着我们APP产生的数据.当然,Android也为每个APP在ROM中创建一个数据存储空间,具体目录是/data/data下.在真机中调试中,该目录对于其他用户是没有开启任何权限,所以在DDMS中我们是打不开该目录的. 解决方案就是我们通过adb登录到我们手机上,然后直接切换到root用户,这时后手机可能会询问是否授权,我们则选择允许.这样我们就成为root用户了.然后我们在更改

Android 使用SharedPreferences进行数据存储和读取数据

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存.如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使用SharedPreferen