首页 > 代码库 > Android中的文件存储技术

Android中的文件存储技术

       文件存储是每个系统都应该具有的功能,Android系统采用Java语言开发,所以它的文件存储功能基本上和J2SE一样的。为什么会引入文件存储?因为大文件、图片等我们若只存储在手机中很有限,一般都是用一个外存储设备进行存储。好了今天我们就讲讲用编程的方式在Android系统中进行存储。

     文件存储的位置

      一般文件默认存储在/data/data/<包>/files/***.***(针对我们开发的APK的时候),当然我们也可以存储在存储卡上(这个时候需要在androidManifest.xml 设定文件的操作权限)。

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


    openFileOutput()  写入  

    在Activity组件中提供了此方法用于写入文件数据,我们先看以下代码,再做解释:

 public void store() {
        try {
            //获取文件的输出流
            FileOutputStream out=this.openFileOutput("test.txt",Context.MODE_WORLD_READABLE);
            //将界面上textboox1控件的值写入到输出文件流中
            out.write(textboox1.getText().toString().getBytes());
            //关闭文件流,数据保存成功
   out.close();


        } catch (FileNotFoundException e) {


            return;


        }


        catch (IOException e){

            return ;


        }

 } 

     从代码中我们可以看到openFileOutput()有两个参数,第一个是文件名,第二个则是文件的操作权限。它有以下操作权限:

Context.MODE_PRIVATE=0:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND;
Context.MODE_APPEND = 32768:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件;
Context.MODE_WORLD_READABLE = 1:表示当前文件可以被其他应用读取;
Context.MODE_WORLD_WRITEABLE= 2:表示当前文件可以被其他应用写入;

如果想需要有读写权限,需要将Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE表示。

    openFileInput() 读取

    Activity组件提供了读取的方法,默认的文件在/data/data/<包>/files/下,实例代码如下:

 public void onl oad()


{


    try {
        //文件输入流
        FileInputStream in=this.openFileInput("test.txt");


        ByteArrayOutputStream stream=new ByteArrayOutputStream();


        byte[] buffer=new byte[1024];


        int length=-1;
//读取数据并放在byte数组中
while((length=in.read(buffer))!=-1)   {
        //写入byte文件流
            stream.write(buffer,0,length);


        }

        stream.close();
        in.close();
        textboot1.setText(stream.toString());
    } catch (FileNotFoundException e) {
        e.printStackTrace();

    }
    catch (IOException e){


        return ;


    }
}

        SDCard 数据存储

     前面已经讲到数据在存储到外部设备时候,需要设定其操作权限。以下的操作方式是我们在实际项目开发过程中常用到的。

//1.用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ 
//2.获取SDCard目录  
File sdCardDir = Environment.getExternalStorageDirectory();       
        //3.在外部设备上创建 获取文件
File saveFile = new File(sdCardDir, “test.txt”);  
//文件存储位置在/sdcard/test.txt
//等价于 File saveFile = new File("/sdcard/a.txt");

       //4.文件输出流
        FileOutputStream outStream = new FileOutputStream(saveFile);

       //5.写入数据
        outStream.write("test".getBytes());

       //6.关闭文件输出流
        outStream.close();

Android中的文件存储技术