基础知识: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;
        }
    }

}




你可能感兴趣的:(android,基础,APP,数据存储)