Android 存储之内部存储

功能介绍

内部存储可以把文件存储到自身的空间里面,但是空间有限,不适合存放大文件
只能被自己应用访问到,空间有限
存储位置:/data/data/< package_name>/fies
操作模式: MODE_PRIVATE(覆盖)& MODE_APPEND(追加)

代码演示

文件存储

/**
     *写内部文本文件
     * @param filename 保存文件名
     * @param content 保存内容,默认UTF-8
     * @param Type 写入类型.MODE_PRIVATE 覆盖读写,MODE_APPEND 追加读写
     * @return 成功返回true 失败返回false
     */    public Boolean SaveToInternalFile(String filename,String content,int Type){

        if (filename==null||filename.length()==0||content.length()==0){
            return false;
        }
        FileOutputStream fos=null;
        try {
            fos=openFileOutput(filename,MODE_PRIVATE);
            fos.write(content.getBytes());
            return true;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return false;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }finally {
            try {
                if (fos!=null){
                    fos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

验证方法可以找到data/data/包名/files目录下,找到指定存储的文件,复制文件到外部打开可以查看,直接打开是没有权限的。

文件读取

    /**
     * 读取内部存储文本文件
     * @param filename 文件名
     * @return 成功返回文本,失败返回null
     */    @Nullable
    public String ReatFromInternalFile(String filename){
        FileInputStream fis=null;
        BufferedReader reader=null;

        File f=new File(this.getFilesDir().getAbsolutePath()+"/"+filename);
        if(!f.exists())
        {
            return null;
        }

        try {
            fis=openFileInput(filename);
            reader=new BufferedReader(new InputStreamReader(fis));
            StringBuffer builder=new StringBuffer();
            String line;
            while ((line=reader. readLine())!=null){
                builder.append(line+"\n");
            }
            return builder.toString();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注