Android 数据存储操作(2)——文件存储

来源:互联网 发布:欧盟进出口数据 编辑:程序博客网 时间:2024/05/21 21:03

1.数据存储

在Android系统中的文件存储操作和Java中的操作类似,不过在Android系统中文件的存放地点可以多变,可以直接在移动设备内存或可移动存储媒介里存放文件, 也可以存放在应用程序中。默认情况下,其他应用程序是没有访问权限的。

(1) 如果要存放一个静态文件在应用程序中,并随着应用程序生成打包进一个APK中,那么可以保存该文件在工程中的res/raw/目录下,比如命名为test.txt.,然后在代码中就可以使用Resources.openRawResource(R.raw.test)打开它,该方法返回一个InputStream对象,可以使用它读取文件数据。

(2)Activity提供了openFileOutput( ) 方法可以用于把数据输出到文件中,其具体的实现过程与在Java环境中文件保存数据是一样的:

package com.example.filestorage;import java.io.FileOutputStream;import java.io.IOException;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.view.Menu;public class MainActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);try {FileOutputStream outStream = this.openFileOutput("test.txt", Context.MODE_PRIVATE);outStream.write("this is testing".getBytes());outStream.close();} catch (IOException e) {}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}

openFileOutput( ) 方法的第一参数用于指定文件名,不能包含路径分隔符“/”,如果文件不存在,Android会自动创建它。创建的文件在 /data/data/<package name>/files目录,如下图:


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

Context.MODE_PRIVATE = 0 //默认操作模式,该文件是私有的,只能被该应用程序访问,写入的内容只会覆盖原文件的内容

Context.MODE_APPEND = 32768 //该模式会检查文件是否存在,若文件存在就往该文件中追加内容,否则就创建一个新的文件

Context.MODE_WORLD_READABLE = 1 //表示当前文件可以被其他应用程序读取

Context.MODE_WORLD_WRITEABLE = 2 //表示当前文件可以被其他应用程序写入

如果希望文件被其他应用程序读和写,可以通过以下方式进行:

FileOutputStream outStream = this.openFileOutput("test.txt", Context.MODE_WORLD_WRITEABLE + Context.MODE_WORLD_READABLE);

2.数据读取

如果要打开存放在/data/data/<package_name>/files目录应用下的文件,可是使用Activity提供的openFileInput()方法:

FileInputStream inStream = this.openFileInput("test.txt");

3.把文件数据存放在SDCard中

使用Activity的openFileOutput()方法保存文件,文件是存放在手机空间上,一般手机的存储空间不是很大,存放小文件还行,如果存放例如视频类的大文件是不行的,可以把大文件存放在SDCard中。

在程序中访问SDCard,需要申请访问SDCard的权限。

    <!-- 在SDCard中创建与删除文件的权限 -->    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>    <!-- 在SDCard中写入数据的权限 -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

要往SDCard中存放文件,首先要判断手机是否装有SDCard,并且可以进行文件的读写:

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {File sdCardDir = Environment.getExternalStorageDirectory();File saveFile = new File(sdCardDir, "test.txt");FileOutputStream outStream = new FileOutputStream(saveFile);outStream.write("this is testing".getBytes());outStream.close();}


原创粉丝点击