基础知识:android 数据存储--->文件存储


”数据存储“,顾名思义  有的时候我们在Android 应用程序开发中 不得不对一些数据进行存储 而数据存储 的作用无非就是  实现文件的快速检索高速存取   从而来满足用户在使用软件的良好体验。


在android中 文件存储有两种方式

1 通过IO文件流(FileOutPutStream)    中的OpenFileOutPut()和FileInPutStream中的openFileInput()方法访问磁盘上的内容文件进行输入输出 简单一点就是java上的那一套知识

2     Environment类中的getExternalStotageDirectory ()对SD卡进行数据读写

注:在默认情况下使用Io流保存文件仅当前应用程序和用户可见 若卸载了应用程序数据文件一并被删除,好处减少了应用程序被卸载后所留下的垃圾文件这样不需要手动删除.


第一种方式:  简单的工具类

 /** 向文件中写入数据
	 * 
	 * @return true表示写入成功 false表示写入失败
	 */
	public static boolean saveToFile(String filename, int mode, byte[] data) {
		boolean isflag = false;
		FileOutputStream outputStream = null;
		try {
			
			outputStream = context.openFileOutput(filename, mode);
			outputStream.write(data, 0, data.length);// 保存字节数组
			isflag = true;

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return false;

	}

	/**
	 * 从文件中读取数据
	 * 
	 * @param file
	 * @return
	 */
	public static String readFromFile(String filename) {
		String result = "";
		FileInputStream fileInputStream = null;

		try {

			ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
			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) {
			System.out.println(e.getMessage());
		}

		return "";

	}



第二种方式:


   public class FileUtils {
    public static final String CACHE = "cache";
    public static final String ICON = "icon";
    public static final String ROOT = "AAb";

    /**
     * 获取图片的缓存的路径
     *
     * @return
     */
    public static File getIconDir() {
        return getDir(ICON);

    }

    /**
     * 获取缓存路径
     *
     * @return
     */
    public static File getCacheDir() {
        return getDir(CACHE);
    }

    public static File getDir(String cache) {
        StringBuilder path = new StringBuilder();
        if (isSDAvailable()) {
            path.append(Environment.getExternalStorageDirectory().getAbsolutePath());
            path.append(File.separator);// '/'
            path.append(ROOT);// /mnt/sdcard/GooglePlay
            path.append(File.separator);
            path.append(cache);// /mnt/sdcard/GooglePlay/cache

        } else {
            File filesDir = uiUtilsTool.getBasAppContext().getCacheDir(); // cache
            // getFileDir
            // file
            path.append(filesDir.getAbsolutePath());
            path.append(File.separator);
            path.append(cache);
        }
        File file = new File(path.toString());
        if (!file.exists() || !file.isDirectory()) {
            file.mkdirs();// 创建文件夹
        }

        return file;

    }

    private static boolean isSDAvailable() {
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            return true;
        } else {
            return false;
        }
    }

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值