`
Lirongheng
  • 浏览: 4811 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android文件的存储

阅读更多

一、把文件存储到该应用下
在我们实际的开发中,很多的时候都需要对数据进行存储和读写,下面是我们常用的保存文件和读取文件的方法:
1、首先我们准备这样的一个布局()


1、Xml文件的代码为:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity"
    android:layout_margin="10dp" >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/text_name"/>
    <EditText
        android:id="@+id/file_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/file_context"/>
    <EditText
        android:id="@+id/file_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minLines="3"/>
   
    <Button
        android:id="@+id/save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/save_btn"/>

 
    <EditText
        android:id="@+id/file_name1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="请输入需要读取的文件名"
        />
     <Button
        android:id="@+id/read"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="读取文件"/>
     <EditText
         android:id="@+id/file_con"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:minLines="3"
         />
 

</LinearLayout>

2、在java代码中把各个控件找到:




3、在按钮监听中对数据进行存储到文件当中
a、获取文件用户输入框里的文件名和需要存储的内容
b、创建一个保存数据的对象
c、调用保存数据对象类中保存文件的方法




4、在新建的SaveService类中创建保存数据的方法




这里有一个地方需要注意的是(图中用红笔标出的参数)
a、Context.MODE_PRIVATE  为系统的默认操作模式,表示文件只能被应用本身所使用,别的应用不能使用;在该模式下新写入的内容会会覆盖旧的内容,因此需要把新写入的内容追加到到原文件当中不能用这个方法。
b、Context.MODE_APPEND  这中方法就是专门为上一种方法存在的缺点而生的,该模式会检验文件是不是存在,如果文件存在则往文件追加新写入的内容,如果文件不存在,则创建新文件
c、Context.MODE_WORLD_READABLE  这种操作模式表示文件能够被其他应读取
d、Context.MODE_WORLD_WRITEABLE 这种操作模式表示文件能被其他应用写入
我们可以根据我们项目的实际需求选取响应操作模式。

5、文件保存到的地方








然后再第二个data下面找到你项目所对应的包名就能找到你所存储的数据了





这样就能轻松地把数据存储到文件当中了


上面介绍了数据存储的方法,有存储就肯定也有数据的读取

数据的读取也是很简单:

1、在activity那边的代码为:





2、在SaveService中的读取文件的方法为:




文件的读取需要一点小小的技巧,我们读出来的是直接用文件输入流读出来的是字节数组,这样我们可以借助io包里面的内存流来进行对数据的暂时保存,然后再从内存流中吧数据取出来,具体代码如上图。

二、把文件存储到SDcard
上面我们介绍了了其中一种把数据存储到应用当中去,但这种存储的方式是存在一定的局限性,当我们需要存储的文件比较大(比如:视频)的时候就不能采用上面的这一种存储方式了,但我们可以把文件存储到SDcard当中。那么又是如何把文件存储到SDcard当中的呢?下面我分享一下:

步骤一:在activity中的代码




步骤二:在SaveService 类中的把数据存储到SDcard中的文件当中的方法为




这里有个小的细节就是我对文件目录书写的技巧,我们可以直接把SDcard的路径写上,如:”/mnt/sdcard”,但这样的写法随着版本的更新可能会导致版本兼容的问题,所以一般不采用这种方法,而是直接用Environment提供的getExternalStorageDirectory()方法来获得sdcard的目录。

步骤三:添加权限,因为这些方法已经涉及到文件的读写,所以要添加一些权限,权限的具体意义看下图的注释




这样把上面的三个步骤完成就能把数据写入到sdcard当中去了。

那么我们储存的文件是在哪里呢?



  • 大小: 14.8 KB
  • 大小: 22.5 KB
  • 大小: 31.1 KB
  • 大小: 39.2 KB
  • 大小: 19.6 KB
  • 大小: 45.8 KB
  • 大小: 19.9 KB
  • 大小: 19 KB
  • 大小: 33.9 KB
  • 大小: 35.1 KB
  • 大小: 31 KB
  • 大小: 13.8 KB
  • 大小: 58.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics