文件存储数据

关于文件存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中。

文件可用来存放大量数据,如文本、图片、音频等。

默认位置:/data/data/<包>/files/***.***。

存储文件代码:

 1 public boolean save(String content){
 2         BufferedWriter bw=null;//全局变量
 3         boolean isSaveSucceed=false;
 4         try {
 5             FileOutputStream fops=context.openFileOutput(fileName,context.MODE_PRIVATE);//创建输入流
 6             OutputStreamWriter writer=new OutputStreamWriter(fops);//创建读写器
 7             bw=new BufferedWriter(writer);//创建一个使用默认大小输出缓冲区的缓冲字符输出流
 8               bw.write(content);
 9               isSaveSucceed=true;
10
11         } catch (FileNotFoundException e) {
12             e.printStackTrace();
13         } catch (IOException e) {
14             e.printStackTrace();
15         }finally{
16            if(bw!=null)
17             try {
18                 bw.close();
19             } catch (IOException e) {
20                 e.printStackTrace();
21             }
22         }
23         return isSaveSucceed;
24     }

openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。

创建的文件保存在 /data/data/<package name>/files目录,如: /data/data/cn.itcast.action/files/itcast.txt ,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/<package name>/files目录就可以看到该文件。

openFileOutput()方法的第二参数用于指定操作模式,有四种模式,分别为:

Context.MODE_PRIVATE = 0

Context.MODE_APPEND = 32768

Context.MODE_WORLD_READABLE = 1

Context.MODE_WORLD_WRITEABLE = 2

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND

Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。

MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;

MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。

如果希望文件被其他应用读和写,可以传入: openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需 要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data /<package name>/files),其他程序无法访问。

除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有这样其他程序才能正确访问。

读取文件代码:

 1     public String read(){
 2         String line;
 3         StringBuilder sb=new StringBuilder();//用于添加数据
 4         BufferedReader br=null;
 5         try {
 6             FileInputStream fis=context.openFileInput(fileName);//创建文件流
 7             br=new BufferedReader(new InputStreamReader(fis));//创建读写器
 8             while((line=br.readLine())!=null){
 9                 sb.append(line);//追加
10             }
11
12         } catch (FileNotFoundException e) {
13             e.printStackTrace();
14         } catch (IOException e) {
15             e.printStackTrace();
16         }finally{
17             if(br!=null){
18                 try {
19                     br.close();
20                 } catch (IOException e) {
21                     e.printStackTrace();
22                 }
23             }
24         }
25         return sb.toString();
26     }

对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。

时间: 2024-08-26 14:58:47

文件存储数据的相关文章

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

Android中的文件存储数据方式

转自以下文章: http://blog.csdn.net/zuolongsnail/article/details/6559338 http://blog.csdn.net/xiazdong/article/details/7687439 http://www.cnblogs.com/feisky/archive/2011/01/05/1926177.html 1.文件存储数据使用了Java中的IO操作来进行文件的保存和读取,只不过Android在Context类中封装好了输入流和输出流的获取方

PHP格式化(文件)存储数据大小(SIZE)显示

有时候我们需要在网页上显示某个文件的大小,或者是其它数据的大小数字. 这个数字往往从跨度很大,如果以B为单位的话可能是个位,如果1G则长达1073741824的数字,这个时候我们就需要根据大小来格式化,比如小于1K则以B为单位显示,小于1M则以KB为单位显示,小于1G则以MB为单位显示,以此类推... 格式化函数参考如下: //格式化size显示 function formatSize($b,$times=0){ if($b>1024){ $temp=$b/1024; return format

Android ROM 文件存储数据

使用Activity 类的openFileInput()和openFileOutput方法来操作设备上的文件,创建的文件默认存在“/data/data/<pakage name>/files”目录下,如在包名为[com.company.business]的程序中创建一个[data.txt]文件,存放路径将是[/data/data/com.company.business/file/date.txt].在默认状态下,文件不能在不同的程序之间共享,这两个方法只支持读取该应用目录下的文件,若读取非自

Android数据保存的3种方式 SharedPreferences存储、文件存储、数据库存储SQLite 未完

1.文件存储 文件存储数据使用了Java中的IO操作来进行文件的保存和读取,只不过Android在Context类中封装好了输入流和输出流的获取方法. 创建的存储文件保存在/data/data/<package name>/files文件夹下.

Android存储数据方式(转)

转自http://www.cnblogs.com/hanyonglu/archive/2012/03/01/2374894.html   本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面将为大家一一详细介绍. 第一种: 使用Sha

android开发中的5种存储数据方式

数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstance State保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整

android之存储数据的四大方式

下面详细解释这四大方式的特点 第一种:文件存储数据 核心原理: Context提供了两个方法来打开数据文件里的文件IO流 FileInputStream openFileInput(String name); FileOutputStream(String name , int mode),这两个方法第一个参数 用于指定文件名,第二个参数指定打开文件的模式.具体有以下值可选: MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的

使用文件进行数据存储四种模式

视频笔记: 1.应用包名:唯一标识一个应用 2.使用文件进行数据存储: (1)Context.MODE_PRIVATE: 默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Context.MODE_APPEND (2)Context_APPEND:只能被应用本身访问:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件. Context_WORLD_READABLE和Context_WORLD_