1.文件存储数据使用了Java中的IO操作来进行文件的保存和读取,只不过Android在Context类中封装好了输入流和输出流的获取方法。
创建的存储文件保存在/data/data/<package name>/files文件夹下。
2.操作。
保存文件内容:通过Context.openFileOutput获取输出流,参数分别为文件名和存储模式。
读取文件内容:通过Context.openFileInput获取输入流,参数为文件名。
删除文件:Context.deleteFile删除指定的文件,参数为将要删除的文件的名称。
获取文件名列表:通过Context.fileList获取files目录下的所有文件名数组。
*获取文件路径的方法:
绝对路径:/data/data/<package name>/files/filename
Context:Context.getFilesDir()可以获取到"/data/data/<package name>/files"
3.四种文件保存的模式。
Context.MODE_PRIVATE 为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下写入的内容会覆盖原文件的内容。
Context.MODE_APPEND 检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
MODE_WORLD_READABLE 表示当前文件可以被其他应用读取。
MODE_WORLD_WRITEABLE 表示当前文件可以被其他应用写入。
在使用模式时,可以用"+"来选择多种模式,比如openFileOutput(FILENAME, Context.MODE_PRIVATE + MODE_WORLD_READABLE);
下面通过程序来演示下文件存储的使用。完整代码下载:android_files.rar
-
-
-
-
-
-
- public class MainActivity extends Activity {
- private EditText writeET;
- private Button writeBtn;
- private TextView contentView;
- public static final String FILENAME = "setting.set";
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- writeET = (EditText) findViewById(R.id.write_et);
- writeBtn = (Button) findViewById(R.id.write_btn);
- contentView = (TextView) findViewById(R.id.contentview);
- writeBtn.setOnClickListener(new OperateOnClickListener());
- }
-
- class OperateOnClickListener implements OnClickListener {
- @Override
- public void onClick(View v) {
- writeFiles(writeET.getText().toString());
- contentView.setText(readFiles());
- System.out.println(getFilesDir());
- }
- }
-
-
- private void writeFiles(String content) {
- try {
-
- FileOutputStream fos = openFileOutput(FILENAME,
- Context.MODE_PRIVATE);
- fos.write(content.getBytes());
- fos.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-
- private String readFiles() {
- String content = null;
- try {
- FileInputStream fis = openFileInput(FILENAME);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- byte[] buffer = new byte[1024];
- int len = 0;
- while ((len = fis.read(buffer)) != -1) {
- baos.write(buffer, 0, len);
- }
- content = baos.toString();
- fis.close();
- baos.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return content;
- }
- }
程序截图:
提供一个文件存储数据的工具类:
-
-
-
-
-
- public class FilesUtil {
-
-
-
-
-
-
-
-
-
- private void writeFiles(Context c, String fileName, String content, int mode)
- throws Exception {
-
- FileOutputStream fos = c.openFileOutput(fileName, mode);
- fos.write(content.getBytes());
- fos.close();
- }
-
-
-
-
-
-
-
-
-
- private String readFiles(Context c, String fileName) throws Exception {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- FileInputStream fis = c.openFileInput(fileName);
- byte[] buffer = new byte[1024];
- int len = 0;
- while ((len = fis.read(buffer)) != -1) {
- baos.write(buffer, 0, len);
- }
- String content = baos.toString();
- fis.close();
- baos.close();
- return content;
- }
- }
1.概述。SharePreferences是用来存储一些简单配置信息的一种机制,使用Map数据结构来存储数据,以键值对的方式存储,采用了XML格式将数据存储到设备中。例如保存登录用户的用户名和密码。只能在同一个包内使用,不能在不同的包之间使用,其实也就是说只能在创建它的应用中使用,其他应用无法使用。
创建的存储文件保存在/data/data/<package name>/shares_prefs文件夹下。
2.使用。
通过Context.getSharedPreferences方法获取SharedPreferences对象,参数分别为存储的文件名和存储模式。
-
- SharedPreferences sp = getSharedPreferences(DATABASE, Activity.MODE_PRIVATE);
-
- Editor editor = sp.edit();
3.操作。SharePreferences存储数据是通过获取Editor编辑器对象来操作的。
插入数据:
调用Editor.putxxxx方法,两个参数分别为键和值。
获取数据:
调用Editor.getxxxx方法,两个参数分别为键和不存在指定键时的默认值。
删除数据:
调用Editor.remove方法,参数为指定的键。
清空所有数据:
调用Editor.clear方法
上述所有方法调用都要执行Editor.commit方法来提交。
下面通过对数据的增删改查来演示下SharePreferences的使用。
完整程序下载地址:android_sharedpreferences.rar
程序截图:
下面提供一个SharedPreferences工具类,在开发中直接调用即可。
-
-
-
-
- public class SharedPrefsUtil {
- public final static String SETTING = "Setting";
- public static void putValue(Context context,String key, int value) {
- Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE).edit();
- sp.putInt(key, value);
- sp.commit();
- }
- public static void putValue(Context context,String key, boolean value) {
- Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE).edit();
- sp.putBoolean(key, value);
- sp.commit();
- }
- public static void putValue(Context context,String key, String value) {
- Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE).edit();
- sp.putString(key, value);
- sp.commit();
- }
- public static int getValue(Context context,String key, int defValue) {
- SharedPreferences sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE);
- int value = sp.getInt(key, defValue);
- return value;
- }
- public static boolean getValue(Context context,String key, boolean defValue) {
- SharedPreferences sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE);
- boolean value = sp.getBoolean(key, defValue);
- return value;
- }
- public static String getValue(Context context,String key, String defValue) {
- SharedPreferences sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE);
- String value = sp.getString(key, defValue);
- return value;
- }
- }