Android 数据存储 之 使用文件进行数据存储

 

 

数据存储与访问
很多时候我们的软件需要对处理后的数据进行存储或再次访问。
Android 为数据 存储提供了如下几种方式:
l 1.文件
l 2.SharedPreferences( 参数 )
l 3.SQLite 数据库
l 4.内容提供者( Content provider
l 5.网络
/* 首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。 public class FileActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { ... FileOutputStream outStream = this.openFileOutput("itcast.txt", Context.MODE_PRIVATE); outStream.write("传智播客".getBytes()); outStream.close(); } } 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 ,只有这样其他程序才能正确访问。 */ 


Android 数据存储 之 使用文件进行数据存储_第1张图片

代码如下 :

  <?xml version="1.0" encoding="utf-8"?> <resources> <string name="filename">文件内容名称</string> <string name="app_name">文件存储</string> <string name="content">文件内容</string> <string name="button">保存文件</string> <string name="error">保存文件失败!</string> <string name="success">保存文件成功!</string> </resources>

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/filename" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/filename" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/content" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/content" android:minLines="5" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button" android:id="@+id/button" /> </LinearLayout>

package com.zyq.file; import com.zyq.serive.FileService; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private static final String TAG="MainActivity"; private EditText contentText; private EditText filenameText; private FileService fileService; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); contentText=(EditText)this.findViewById(R.id.content); filenameText=(EditText)this.findViewById(R.id.filename); Button button = (Button)this.findViewById(R.id.button); fileService=new FileService(this); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String filename=filenameText.getText().toString().trim(); String content=contentText.getText().toString().trim(); try { fileService.save(filename, content); Toast.makeText(MainActivity.this, R.string.success, 1).show(); } catch (Throwable e) { Toast.makeText(MainActivity.this, R.string.error, 1).show(); Log.i(TAG, e.toString()); e.printStackTrace(); } } }); } }

package com.zyq.serive; import java.io.FileOutputStream; import android.content.Context; public class FileService { private Context context; public FileService(Context context) { this.context=context; } /** * 业务方法 保存文件内容 * @param filename 文件名称 * @param content 文件内容 * @throws Throwable */ public void save(String filename,String content) throws Throwable { FileOutputStream fileOutputStream=context.openFileOutput(filename, 0);//0代表文件的操作模式 0代表私有模式 fileOutputStream.write(content.getBytes());//默认是UTF-8编码 fileOutputStream.close(); } }

 


l

你可能感兴趣的:(Android 数据存储 之 使用文件进行数据存储)