5种数据存储方式之文件和Preferences

简介: l文件 Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。

l 文件


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);


/**
 * @author  
 * @文件操作类:新建文件、删除、读写
 * */
package com.gogler.gps.infor;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

import android.content.Context;
import android.os.Environment;

public class FileHelper
{
    
    private final Context context;
    
    /** SD卡是否存在 **/
    
    private boolean       hasSD = false;
    
    /** SD卡的路径 **/
    
    private final String  SDPATH;
    
    /** 当前程序包的路径 **/
    
    private final String  FILESPATH;
    
    /**
     * 从调用者传入
     * @param Context like this.getApplicationContext()
     * 
     * 
     * */
    public FileHelper ( Context context )
    {
    
	this.context = context;
	
	hasSD = Environment.getExternalStorageState().equals(
	
	android.os.Environment.MEDIA_MOUNTED);
	
	SDPATH = Environment.getExternalStorageDirectory().getPath();
	
	FILESPATH = this.context.getFilesDir().getPath();
	
    }
    
    /**
     * 
     * 在SD卡上创建文件
     * 
     * 
     * 
     * @throws IOException
     */
    
    public File createSDFile(String fileName) throws IOException
    {
    
	final File file = new File(SDPATH + "//" + fileName);
	
	if (!file.exists())
	{
	    
	    file.createNewFile();
	    
	}
	
	return file;
	
    }
    
    /**
     * 
     * 删除SD卡上的文件 
     * 
     * 
     * @param fileName
     */
    
    public boolean deleteSDFile(String fileName)
    {
    
	final File file = new File(SDPATH + "//" + fileName);
	
	if ((file == null) || !file.exists() || file.isDirectory())
	{
	    return false;
	}
	
	return file.delete();
	
    }
    
    public String getFILESPATH()
    {
    
	return FILESPATH;
	
    }
    
    public String getSDPATH()
    {
    
	return SDPATH;
	
    }
    
    public boolean hasSD()
    {
    
	return hasSD;
	
    }
    
    /**
     * 
     * 读取SD卡中文本文件
     * 
     * 
     * 
     * @param fileName
     * 
     * @return String
     */
    
    public String readSDFile(String fileName)
    {
    
	final StringBuffer sb = new StringBuffer();
	
	final File file = new File(SDPATH + "//" + fileName);
	
	try
	{
	    
	    final FileInputStream fis = new FileInputStream(file);
	    
	    int c;
	    
	    while ((c = fis.read()) != -1)
	    {
		
		sb.append((char) c);
		
	    }
	    
	    fis.close();
	    
	}
	catch (final FileNotFoundException e)
	{
	    
	    e.printStackTrace();
	    
	}
	catch (final IOException e)
	{
	    
	    e.printStackTrace();
	    
	}
	
	return sb.toString();
	
    }
    
    /**
     * 
     * 
     * 写SD卡上的文件
     * 
     * 
     * @param String
     *            fileName,String content
     * 
     * 
     * @return boolean
     * 
     * 
     * @author Administrator
     */
    
    public boolean writeFileData(String fileName, String content)
    {
    
	try
	{
	    final FileOutputStream fout = new FileOutputStream(SDPATH + "//"
		    + fileName, true);
	    final PrintStream ps = new PrintStream(fout);
	    ps.println(content);
	    ps.close();
	}
	catch (final IOException e)
	{
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}
	return true;
    }
    
}


l SharedPreferences
创建可跨程序使用的Preferrence


package com.gogler.SharePreferences;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import android.os.Bundle;

public class SharePreferencesTestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
//        使用可跨程序读写的Preference
        SharedPreferences sp = getSharedPreferences("hello", Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
        Editor editor = sp.edit();
        String str = "SharePreferencesTestActivity: "+getResources().getString(R.string.hello);
        editor.putString("helloStr", str );
        editor.commit();
    }
}



读取其他APP的Preference

package sharePreferences.gogler.com;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.widget.TextView;

public class UseSharePreferencesTestActivity extends Activity {
    
	final String packageName = "com.gogler.SharePreferences";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
//        访问其他APP的Preference
        try {
			Context otherAppContext = createPackageContext(packageName, Context.CONTEXT_IGNORE_SECURITY);
			SharedPreferences sp = otherAppContext.getSharedPreferences("hello", Context.MODE_WORLD_READABLE);
			 TextView tv=(TextView)findViewById(R.id.tv);
			 tv.setText(sp.getString("helloStr", ""));
		} catch (NameNotFoundException e) { 
			e.printStackTrace();
		}
    }
}




相关文章
|
1月前
|
存储 监控 安全
内网屏幕监控软件的数据存储与管理:使用SQLite数据库保存监控记录和配置信息
在当今数字化时代,安全和监控在企业和组织中变得至关重要。内网屏幕监控软件作为一种关键工具,帮助组织监视员工的活动并确保信息安全。这种软件不仅需要高效地记录和管理监控数据,还需要能够方便地进行配置和调整。本文将讨论如何使用SQLite数据库来保存监控记录和配置信息,并介绍如何通过自动化机制将监控到的数据提交到指定网站。
196 2
|
10月前
|
数据可视化 Java API
【Eclipse设计】Excel表格的读写功能
【Eclipse设计】Excel表格的读写功能
117 0
|
10月前
|
Java Android开发
eclipse保存自动组织导入、删除不必要的导入、格式化代码
eclipse保存自动组织导入、删除不必要的导入、格式化代码
|
11月前
|
Windows
ArcGIS:如何连接文件夹、修改元数据样式、建立个人地理数据库、复制移动文件?
ArcGIS:如何连接文件夹、修改元数据样式、建立个人地理数据库、复制移动文件?
307 0
|
关系型数据库 MySQL 数据库
idea里面mysql数据库统一配置文件和存放到集合中读取出来详细步骤
统一配置可以方便后期代码的维护,比如更改mysql的密码或者什么就可以直接在资源配置文件里面更改就好,不用到代码里面去更改了。
142 0
idea里面mysql数据库统一配置文件和存放到集合中读取出来详细步骤
|
存储 文件存储
jupyter修改默认“文件存储路径”,其实没必要,使用这种方法,随时随地可修改
jupyter修改默认“文件存储路径”,其实没必要,使用这种方法,随时随地可修改
jupyter修改默认“文件存储路径”,其实没必要,使用这种方法,随时随地可修改
|
Windows
Windows 技术篇-资源管理器文件默认排序设置,通用文件夹排序设置
Windows 技术篇-资源管理器文件默认排序设置,通用文件夹排序设置
340 0
Windows 技术篇-资源管理器文件默认排序设置,通用文件夹排序设置
|
Java Go
将ABAP透明表的定义(元数据)解析出来导入到剪切板(clipboard)里
将ABAP透明表的定义(元数据)解析出来导入到剪切板(clipboard)里
将ABAP透明表的定义(元数据)解析出来导入到剪切板(clipboard)里
|
存储
艾伟_转载:使用配置文件(.settings、.config)存储应用程序配置
引言 我不知大家早先是如何保存应用程序配置,以备下次打开时使用的,反正我开始学.Net的时候就去研究序列化,以二进制或XML格式的序列化来保存应用程序配置。这样每次都要建立单独的配置类,并书写读写配置代码,相当麻烦。
797 0
|
存储 数据库
Confluence 6 整合到支持的附件存储选项
如果你现在正在存储附件到 WebDav 或者你的数据库中。你可以整合附件的存储到文件系统中。当你的附件从数据库中被合并到文件系统后,你存储在数据库中的附件数据就可以从数据库中删除了。
849 0