当前位置: 首页 > news >正文

Android学习笔记之数据的内部存储方式实习数据的读写、存储到Cache实现读写


(1)目录结构


(2) 布局文件:

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="28dp"
        android:layout_marginTop="17dp"
        android:ems="10" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText1"
        android:layout_below="@+id/editText1"
        android:layout_marginTop="54dp"
        android:text="保存信息" />

</RelativeLayout>

(3)保存数据、读取数据的工具类:FileService.java

package com.example.data_storage_interal.file;

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

import android.content.Context;

/**
 * 使用内部存储的方式,可以使应用卸载的时候清除所有的相关信息
 * 
 * @author piaodangdehun
 * 
 */
public class FileService {

	private Context context;

	public FileService(Context context) {
		this.context = context;
	}

	/**
	 * 保存内容到文件中
	 * 
	 * @param fileName
	 *            : 文件名
	 * @param mode
	 *            :模式
	 * @param data
	 *            :数据的缓冲区
	 * @return 返回真假值
	 */
	public boolean saveContentToFile(String fileName, int mode, byte[] data) {
		boolean flag = false;
		FileOutputStream outputStream = null;
		try {
			outputStream = context.openFileOutput(fileName, mode);
			try {
				outputStream.write(data, 0, data.length);
			} catch (IOException e) {
				e.printStackTrace();
			}
			flag = true;
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} finally {
			if (outputStream != null) {
				try {
					outputStream.close();
				} catch (Exception e2) {
				}
			}
		}
		return true;
	}

	/**
	 * 读取数据
	 * 
	 * @param fileName
	 * @return
	 */
	public String readContentFromFile(String fileName) {
		String result = "";
		FileInputStream fileInputStream = null;
		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
		try {
			fileInputStream = context.openFileInput(fileName);
			int len = 0;
			byte[] data = new byte[1024];
			while ((len = fileInputStream.read(data)) != -1) {
				outputStream.write(data, 0, len);
			}
			return new String(outputStream.toByteArray());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "";
	}

	/*
	 * 保存文件到Chace中
	 */
	public boolean saveCacheFile(String fileName, byte[] data) {
		boolean flag = false;
		File file = context.getFilesDir();
		FileOutputStream outputStream = null;
		try {
			File folderFile = new File(file.getAbsoluteFile() + "/txt");
			if (!folderFile.exists()) {
				folderFile.mkdirs();// 创建目录
			}
			// context.openFileOutput("my.txt", context.MODE_WORLD_READABLE);
			outputStream = new FileOutputStream(folderFile.getAbsolutePath()
					+ "/" + fileName);
			try {
				outputStream.write(data, 0, data.length);
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} finally {
			if (outputStream != null) {
				try {
					outputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		// System.out.println("-->>"+file.getAbsolutePath());
		return flag;
	}

	/*
	 * 获得文件的完整路径
	 */
	public void listCacheFile() {
		/*
		 * String[] strings = context.fileList(); for (int i = 0; i <
		 * strings.length; i++) { System.out.println("-->>" + strings); }
		 */
		File file = context.getFilesDir();
		File root = new File(file.getAbsoluteFile() + "/txt");
		File[] listFiles = root.listFiles();
		for (File file2 : listFiles) {
			System.err.println("--->>" + file2.getAbsolutePath());
		}
	}
}


(4)MainActivity.java

package com.example.data_storage_interal;

import com.example.data_storage_interal.file.FileService;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

	private Button button;
	private EditText editText;
	private FileService fileService;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button = (Button) this.findViewById(R.id.button1);
		editText = (EditText) this.findViewById(R.id.editText1);

		fileService = new FileService(this);
		/*
		 * 按钮点击的时候存放到文件中
		 */
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				String valueString = editText.getText().toString().trim();
				boolean flag = fileService.saveContentToFile("bb.txt",
						Context.MODE_APPEND, valueString.getBytes());
				if (flag) {
					Toast.makeText(MainActivity.this, "保存成功!",
							Toast.LENGTH_SHORT).show();
				}
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

(5)测试类(要在资源文件中添加相应的信息、这里不说)


package com.example.data_storage_interal;

import com.example.data_storage_interal.file.FileService;

import android.app.Service;
import android.content.Context;
import android.test.AndroidTestCase;
import android.util.Log;

public class MyTest extends AndroidTestCase {
	private static final String TAG = "MyTest";

	/*
	 * 保存数据
	 */
	public void save() {
		FileService fileService = new FileService(getContext());
		boolean flag = fileService.saveContentToFile("aa.txt",
				Context.MODE_PRIVATE + Context.MODE_APPEND, "nihao".getBytes());
		Log.i(TAG, "--->>" + flag);
	}

	/*
	 * 保存数据
	 */
	public void read() {
		FileService fileService = new FileService(getContext());
		String msg = fileService.readContentFromFile("bb.txt");
		Log.i(TAG, "--->>" + msg);
	}

	public void testChaceFile() {
		FileService fileService = new FileService(getContext());
		fileService.saveCacheFile("hello.txt", "hello world!".getBytes());
	}

	public void testListFile() {
		FileService fileService = new FileService(getContext());
		fileService.listCacheFile();
	}
}



保存成功后会在data-data-apk的安装目录下找到相应的文件:



相关文章:

  • JSP详细解析
  • Android学习笔记之数据的Sdcard存储方法及操作sdcard的工具类
  • Construct Binary Tree from Inorder and Postorder Traversal
  • Android学习笔记之Fragment的两种使用方法
  • Android学习笔记之SQLite数据库的使用及常用的增删改查方法、无sql语句的DRUD方法汇总
  • codeforces 455C 并查集
  • Android学习笔记之使用意图打开内置应用程序组件
  • java web sql注入测试(3)---现象分析
  • Android学习笔记之广播意图及广播接收者MyBroadcastReceiver、Broadcast
  • 一些简单的shell脚本实例 转
  • xUtils简介及其使用方法
  • OC基础(20)
  • Android框架Picasso介绍
  • Assets遇到的问题
  • 直接拿来用!最火的Android开源项目(一)
  • 收藏网友的 源程序下载网
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 0基础学习移动端适配
  • 2017-08-04 前端日报
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • gcc介绍及安装
  • Git同步原始仓库到Fork仓库中
  • HTML-表单
  • Java多线程(4):使用线程池执行定时任务
  • js
  • js面向对象
  • learning koa2.x
  • Linux快速复制或删除大量小文件
  • Linux中的硬链接与软链接
  • Making An Indicator With Pure CSS
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • PAT A1017 优先队列
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • SpiderData 2019年2月16日 DApp数据排行榜
  • vuex 学习笔记 01
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 观察者模式实现非直接耦合
  • 来,膜拜下android roadmap,强大的执行力
  • 使用common-codec进行md5加密
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 协程
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 数据可视化之下发图实践
  • 说说我为什么看好Spring Cloud Alibaba
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # Maven错误Error executing Maven
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $jQuery 重写Alert样式方法
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (三)mysql_MYSQL(三)
  • (转)关于如何学好游戏3D引擎编程的一些经验