android 开发-文件存储之读写sdcard

  android提供对可移除的外部存储进行文件存储。在对外部sdcard进行调用的时候首先要调用Environment.getExternalStorageState()检查sdcard的可用状态。通过Environment.getExternalStorageDirectory()得到Sdcard的路径。文件写入外部存储需要添加对sdcard的授权

  <!-- 写sdcard需要添加写sdcard的授权 -->
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  boolean mExternalStorageAvailable = false;  boolean mExternalStorageWriteable = false;  String state = Environment.getExternalStorageState();

  if (Environment.MEDIA_MOUNTED.equals(state)) {      // We can read and write the media      mExternalStorageAvailable = mExternalStorageWriteable = true;  } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {      // We can only read the media      mExternalStorageAvailable = true;      mExternalStorageWriteable = false;  } else {      // Something else is wrong. It may be one of many other states, but all we need      //  to know is we can neither read nor write      mExternalStorageAvailable = mExternalStorageWriteable = false;  }android学习过程中的示例如下:  文件读写工具类:  
 1 package com.example.android_data_storage_sdcard.file;
 2
 3 import java.io.File;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7
 8 import android.os.Environment;
 9 import android.util.Log;
10 /**
11  * @author xiaowu
12  * @note  文件存储之外部存储(sdcard存储)。
13  *         外部存储不需要context
14  */
15 public class FileUitls {
16     private final String TAG = "FileUtil";
17
18     /**
19      * 保存文件至外部存储的SD卡
20      *
21      * @param fileName
22      * @param mode
23      * @param data
24      * @return
25      */
26     public boolean saveFileToSdcard(String fileName,  byte[] data) {
27         boolean flag = false;
28         // 判断sdcard的状态
29         String state = Environment.getExternalStorageState();
30         // 获取sdcard的根目录 /mnt/sdcard/...
31         File root = Environment.getExternalStorageDirectory();
32         FileOutputStream outputStream = null;
33         // Environment.MEDIA_MOUNTED表示SD卡挂载在手机上并可以读写
34         if (Environment.MEDIA_MOUNTED.equals(state)) {
35             // 在sdcard的根目录下创建文件
36             File file = new File(root, fileName);
37             try {
38                 outputStream = new FileOutputStream(file);
39                 outputStream.write(data, 0, data.length);
40                 flag = true ;
41             } catch (FileNotFoundException e) {
42                 Log.i(TAG, "文件未找到异常!");
43             } catch (Exception e) {
44                 Log.i(TAG, "写文件发生异常");
45             } finally {
46                 if (outputStream != null) {
47                     try {
48                         outputStream.close();
49                     } catch (IOException e) {
50                         Log.i(TAG, "关闭IO流发生异常!");
51                     }
52                 }
53             }
54         }
55         return flag;
56     }
57 }

  Junit单元测试类:

  单元测试类必须继承自AndroidTestCase,并在资源清单文件中添加单元测试包  <uses-library android:name="android.test.runner"/>,并添加单元测试目标包

  <!-- 引入单元测试目标包 -->
  <instrumentation
    android:name="android.test.InstrumentationTestRunner"
    android:targetPackage="com.example.android_data_storage_sdcard" >
  </instrumentation>

 1 package com.example.android_data_storage_sdcard;
 2
 3 import android.test.AndroidTestCase;
 4
 5 import com.example.android_data_storage_sdcard.file.FileUitls;
 6
 7 public class MyTest extends AndroidTestCase {
 8
 9     public void test() {
10         FileUitls fileUitls = new FileUitls();
11         fileUitls.saveFileToSdcard("keji.txt", "橘子洲头".getBytes());
12     }
13 }
  
时间: 2024-10-14 02:10:11

android 开发-文件存储之读写sdcard的相关文章

android 开发-数据存储之文件存储

android的文件存储是通过android的文件系统对数据进行临时的保存操作,并不是持久化数据,例如网络上下载某些图片.音频.视频文件等.如缓存文件将会在清理应用缓存的时候被清除,或者是应用卸载的时候缓存文件或内部文件将会被清除. 以下是开发学习中所写的示例代码,以供日后查阅: xml: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="

Android开发进阶:如何读写Android文件

Android主要有四大主要组件组成:Activity.ContentProvider.Service.Intent组成.Android文件的运行主要需要读写四大组件的文件.本文将介绍如何读写Android文件,希望对正在进行Android开发的朋友有所帮助. 文件存放位置 在Android中文件的I/O是存放在/data/data/<package name>/file/filename目录下. 提示:Android是基于linux系统的,在linux的文件系统中不存在类似于Windows的

关于Android开发数据存储的方式(一)

关于Android开发数据存储方式(一) 在厦门做Android开发也有两个月了,快情人节了.我还在弄代码. 在微信平台上开发自己的APP,用到了数据存储的知识,如今总结一下: 整体的来讲.数据存储方式有三种:一个是文件,一个是数据库,还有一个则是网络. 当中文件和数据库可能用的稍多一些.文件用起来较为方便.程序能够自定义格式:数据库用起稍烦锁一些,但它有它的长处.比方在海量数据时性能优越.有查询功能,能够加密,能够加锁.能够跨应用.跨平台等等.网络,则用于比較重要的事情,比方科研,勘探,航空等

数据类操作之文件存储跟读写

(一)概述 本节给大家介绍的是Android数据存储与 访问方式中的一个--文件存储与读写,当然除了这种方式外,我们可以存到SharedPreference,数据库, 或者Application中: (二)文件存储跟读写 1.Android文件的操作模式 学过Java的同学都知道,我们新建文件,然后就可以写入数据了,但是Android却不一样,因为Android是 基于Linux的,我们在读写文件的时候,还需加上文件的操作模式,Android中的操作模式如下: 2.文件的相关操作方法 3.文件读

关于Android开发数据存储的四大方式

关于Android开发数据存储的四大方式 在厦门做Android开发也有两个月了,快情人节了,我还在弄代码.在微信平台上开发自己的APP,用到了数据存储的知识,现在总结一下: 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其中文件和数据库可能用的稍多一些,文件用起来较为方便,程序可以自己定义格式:数据库用起稍烦锁一些,但它有它的优点,比如在海量数据时性能优越,有查询功能,可以加密,可以加锁,可以跨应用,跨平台等等:网络,则用于比较重要的事情,比如科研,勘探,航空等实时

19.Android之文件存储方法学习

Android开发中会用到文件存储,今天来学习下. 先改下布局界面: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_

android开发-数据存储Ⅰ

本章讲述在Android开发中,简单的数据存储.涉及知识主要是SharedPreferences,及多页面切换ViewPager. 1.功能需求 做一个小应用.启动的时候有左右引导图.只有第一次启动时显示,看完以后,下一次启动就不会再显示了. 做两个Activity展示引导,引导后进入主界面 点击跳转下一页,主界面内容不限 第二次启动时不再显示引导界面,直接跳转应用主界面 2.软件实现 图1 图2 图3 简要说明:运行软件,进入图1界面,若第一次使用,软件在运行2秒后,自动跳转到引导界面.通过滑

自学Android笔记——文件存储

1.文件存储简介: 文件存储是android的基本的一种数据存储方式,它与Java中的文件存储类似,都是以I/O流的形式把数据原封不动地存储到文档中,不同的是,android中的文件存储分为内部存储和外部存储. 2.内部存储: 内部存储是指应用程序中的数据以文件方式存储到设备的内部存储空间中.默认情况下,保存在内部存储内的文件是应用程序私有的,如果其他应用程序要操作本应用程序中的文件,需要设置权限.当用户卸载此应用程序时,内部存储的数据会一并清除. 内部存储使用的是Context提供的openF

Android使用文件存储数据

Android上最基本的存储数据的方式即为使用文件存储数据,使用基本的Java的FileOutStream,BufferedWriter,FileInputStream和BufferedReader即可. MainActivity.java package org.elvalad.filepersistencetest; import android.app.Activity; import android.content.Context; import android.os.Bundle; i