Android数据存储方式之文件存储详解

                 关于Android的数据存储方式有五种,分别是 1. 使用SharedPreferences存储方式(偏好设置), 2. 文件存储数据, 3. SQLite存储方式, 4. 使用ContentProvider存储数据, 5. 网络存储数据 。

                 今天主要讲解一下文件的存储方式,在项目的很多地方都会用到文件存储(比如 : 存放客户端固定配置信息 , 从网络下载文件等等)。

                 Context提供了2种方法打开数据文件里的文件IO流FileInputStream ,FileOutputStream来操作文件。

                 先看使用方法:context.openFileInput(String FileName);FileName 为文件名;

                                         context.openFileOutput(String FileName , int mode);FileName 为文件名; mode 为文件的打开模式。

                 mode有一下选项:

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

                                               2.MODE_APPEND:该模式会检查文件是否存在,存在就往文件中追加内容,否则就新建文件。

                                                3.MODE_WORLD_PEADABLE:表示当前文件可以被其他应用读取。

                                                4.MODE_WORLD_WRITEABLE : 表示当前文件可以被其他应用写入。

                 Context还提供了几个重要方法:

                                                 1.getDir(String name,int mode) : 在应用程序的数据文件下获取或者创建name对应的子目录。              

                                                 2.File getFileDir() : 获取该应用程序的数据文件夹的绝对路径。

                                                 3.String[ ] fileList() : 返回该应用数据文件夹的全部文件。 

                                      


                  示例代码:TestActivity :

public class TestActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		setContentView(R.layout.activity_main);
		super.onCreate(savedInstanceState);
	}

	/**
	 * 写入文件
	 * 
	 * @param content
	 */
	public void writeFiles(String content) {
		// 步骤1:获取输入值
		if (content == null)
			return;
		try {
			// 步骤2:创建一个FileOutputStream对象,MODE_APPEND追加模式,默认为MODE_PRIVATE
			FileOutputStream fos = openFileOutput("message.txt", MODE_APPEND);
			// 步骤3:将获取过来的值放入文件
			fos.write(content.getBytes());
			// 步骤4:关闭数据流
			fos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 读出文件
	 * 
	 * @param content
	 */
	public String readFiles() {
		try {
			FileInputStream inStream = this.openFileInput("message.txt");
			byte[] buffer = new byte[1024];
			int hasRead = 0;
			StringBuilder sb = new StringBuilder();
			while ((hasRead = inStream.read(buffer)) != -1) {
				sb.append(new String(buffer, 0, hasRead));
			}

			inStream.close();
			return sb.toString();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

}

                     也可以将其封装成工具类,提高代码可读性:

/**
 *文件工具类
 * @author 蔡睿智
 *
 */
public class FileUtils {
	/** 
     * 保存文件内容 
     *  
     * @param c 
     * @param fileName 
     *            文件名称 
     * @param content 
     *            内容 
     */  
	public static void writeFiles(Context context,String fileName,String content,int mode) throws Exception{
		// 打开文件获取输出流,文件不存在则自动创建  
		FileOutputStream fos = context.openFileOutput(fileName, mode);  
        fos.write(content.getBytes());  
        fos.close(); 
	}
	
	/** 
     * 读取文件内容 
     *  
     * @param c 
     * @param fileName 
     *            文件名称 
     * @return 返回文件内容 
     */
	public static 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;  
    }  
}

                   以上就是Android文件存储的大致内容,写的不好如有更好的建议欢迎交流。共勉;

                             

                            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值