尽管android通过首选项和数据库提供了结构化的存储方式,但是有时简单的文件就足够了。
读取与写入特定于应用程序的数据文件与在java应用程序中的做法几乎一样,关键在于对Activity或其他Context使用openFileInput()或onpenFileOutput(),以便分别获取InputStream或OutputStream,其余的与常规的I/O逻辑没有太大区别。
注意openFileInput()和onpenFileOutput()不接受文件路径,只接受简单的文件名。且所有应用程序都可以访问外部存储空间,而openFileInput()和onpenFileOutput()只能作用于应用程序私有空间。
以下布局可用于大部分文本编辑器:
java的实现如下:
此示例将得到一个持久性的记事本,键入的内容都将保留(除非进行了删除)。
读取数据:
如果要打开存放在/data/data/<package name>/files目录应用私有的文件,可以使用Activity提供openFileInput()方法。
FileInputStream inStream = this.getContext().openFileInput(filename);
或者直接使用文件的绝对路径:
File file = new File("/data/data/"应用所在包"/files/"文件名"");
FileInputStream inStream = new FileInputStream(file);
对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。
Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data/<package name>/cache目录
getFilesDir()方法用于获取/data/data/<package name>/files目录
存储数据:
Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/<package name>/files目录,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File
Explorer视图,然后在File Explorer视图中展开/data/data/<package name>/files目录就可以看到该文件。
openFileOutput()方法的第二参数用于指定操作模式,有四种模式,分别为:
Context.MODE_PRIVATE 为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容。
Context.MODE_APPEND模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE 表示当前文件可以被其他应用读取。
Context.MODE_WORLD_WRITEABLE 表示当前文件可以被其他应用写入。
如果希望文件被其他应用读和写,可以传入:
openFileOutput(filename,Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
也可以在外部存储空间(如SD卡)进行读取和写入。使用Environment.getExternalStorageDirectory()获取SD卡根目录下的File对象,当然还得获得权限:
在AndroidManifest.xml中加入访问SDCard的权限如下:
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Environment.getExternalStorageState()方法用于获取SDCard的状态。
(源《Android开发入门教程》及互联网)
分享到:
相关推荐
此外,为了提供良好的用户体验,应用通常会封装这些数据库操作,使用Repository模式进行数据管理,确保数据访问的统一性和线程安全性。Repository层负责与SQLite数据库以及可能的远程API交互,而ViewModel则负责向UI...
在Android中,使用SQLiteOpenHelper作为数据库操作的基类,创建数据库和升级机制,通过ContentProvider对外提供数据访问接口。 4. **Activity与Fragment** 在Android中,Activity是应用程序的入口,负责处理用户...
【Android笔记本小程序源码】是一个面向Android平台的项目,它为用户提供了一个轻量级的笔记应用体验。这个小程序集成了登录注销功能,允许用户安全地管理自己的笔记。它还涉及到了数据库连接技术,用于存储和检索...
5. **Android权限**:访问存储或网络可能需要获取相应的权限。在Android 6.0及以上版本,需要在运行时请求用户授予这些权限。 6. **通知(Notification)**:为了让用户及时看到新笔记或提醒,应用可能需要使用通知...
### Android驱动开发笔记概览 #### 1. JDK环境配置 在Android驱动开发过程中,通常需要一个良好的开发环境来支持项目的进行。文档中的片段显示了如何设置JDK(Java Development Kit)环境变量。这部分内容涉及到的...
录音功能需要`RECORD_AUDIO`权限,以便访问麦克风;而读取外部存储器权限`WRITE_EXTERNAL_STORAGE`则是为了将录制的音频文件保存到SD卡上。在XML文件中添加以下权限: ```xml <uses-permission android:name=...
这份"Android笔记.zip"很可能包含了一位开发者或学生整理的关于Android编程的学习资料,旨在帮助理解并掌握Android Studio的使用以及Android应用开发的核心概念。 Android Studio基于IntelliJ IDEA,提供了丰富的...
`Android笔记_ContentProvider.docx`介绍了ContentProvider,它是Android四大组件之一,用于在不同应用间共享数据。开发者可以通过ContentProvider公开自己的数据集,其他应用可以通过URI查询、插入、更新和删除这些...
### Android学习笔记 #### 1. Android概述 **1.1 Android的特性** - **应用框架**:Android提供了一个强大的应用框架,使得开发者能够轻松地重用基础组件和服务,简化了应用程序的开发流程。 - **Dalvik虚拟机**...
【Android开发笔记】是一部全面覆盖Android开发核心技术与实践的综合资料,旨在帮助开发者从零基础到精通,深入了解Android系统的工作原理以及应用开发的各种技巧。笔记包含了大量的实例代码、技术解析和实战经验,...
本资源"android文件存储源码及笔记"提供了一个名为`SDCardHelper`的Java工具类,以及一个`SDCard.xlsx`的Excel文件,帮助开发者理解和实践Android中的文件存储操作。 `SDCardHelper`是一个针对外部存储(如SD卡)的...
本篇将详细探讨如何实现“Android笔记之图片自由裁剪DEMO”,并结合提供的`ImageCutDemo`来深入理解相关知识点。 1. **Intent选择图片** Android系统提供了Intent机制,用于启动系统服务或与其他应用程序进行交互...
《Android应用开发揭秘》读书笔记不仅是一份个人学习历程的记录,更是一部深入浅出的Android开发指南。本书籍及笔记覆盖了从基础知识到高级应用的广泛内容,为初学者和有经验的开发者提供了宝贵的资源。 ### ...
【Android云笔记】项目是一个专为初学者设计的实践教程,旨在帮助他们理解和掌握如何在Android平台上开发一款基于云同步的笔记应用。这个项目涵盖了Android应用程序开发的基础知识,包括UI设计、数据存储、网络通信...
Android基础学习笔记主要涵盖了一系列关于Android开发的基本概念和关键组件,以下是这些知识点的详细解析: 1. **Activity**: 是Android应用程序的基本单元,它代表用户在屏幕上看到的一个界面。每个Activity都必须...
3. **Android笔记应用的基本结构** - **MainActivity**: 应用的主要入口,通常负责初始化界面和处理用户交互。 - **NoteActivity/EditorActivity**: 用于创建和编辑笔记的活动,可能包括输入框、编辑器和保存功能...
ContentProvider则是Android中统一数据访问的接口,可以用来共享应用内的数据给其他应用。 总的来说,这份笔记覆盖了Android开发的多个核心方面,从基础的UI设计和数据管理到网络通信和组件交互,对于想要系统学习...
【Android项目源码详解——构建简易笔记应用】 在Android开发中,创建一个简易的笔记应用是初学者常常会遇到的任务,也是进阶开发者巩固基础知识的良好实践。本项目源码提供了这样一个平台,帮助开发者理解Android...