Context.getExternalFilesDir()和Context.getExternalCacheDir()

在Android手机里面,缓存的位置分为两类

一个是内部存储 另一个是外部存储

Context.getExternalFilesDir()和Context.getExternalCacheDir() 则属于内部存储

当用户卸载App的时候 内部存储的文件也会被删除

知道了它们是什么现在说下它们的区别

Context.getExternalFilesDir()方法 获取的目录 这个有一个文件夹是自己可以随便命名的一般长时间保存一些文件

Context.getExternalCacheDir() 方法获取的目录是有一个Cache文件夹 一般存放临时缓存数据

下面写一个demo 查看下他们的区别

下面有实现的就是点击文字缓存内容到指定的文件里面

1 使用getExternalFilesDir 

public class InflateActivity extends AppCompatActivity {
    private TextView textView;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inflate_activity_layout);
        textView = findViewById(R.id.txt);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                File dir = new File(InflateActivity.this.getExternalFilesDir("me"),"log");
                Log.e("文件目录",dir.toString());
                if (!dir.exists()) {
                    try {
                        dir.createNewFile();
                        Log.e("创建了文件","创建了log文件");
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                FileOutputStream fos = null;
                try {
                    fos = new FileOutputStream(dir);
                    fos.write("要写入文件的内容是滴答滴答下雨了".getBytes());
                    Log.e("写入数据","写入了");
                    fos.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }
        });

    }
}

看下日志

可以看到自己命名了一个me的文件夹 然后到指定目录查看

2 getExternalCacheDir 方法

public class InflateActivity extends AppCompatActivity {
    private TextView textView;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inflate_activity_layout);
        textView = findViewById(R.id.txt);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                File dir = new File(InflateActivity.this.getExternalCacheDir(),"log");
                Log.e("文件目录",dir.toString());
                if (!dir.exists()) {
                    try {
                        dir.createNewFile();
                        Log.e("创建了文件","创建了log文件");
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                FileOutputStream fos = null;
                try {
                    fos = new FileOutputStream(dir);
                    fos.write("要写入文件的内容是滴答滴答下雨了".getBytes());
                    Log.e("写入数据","写入了");
                    fos.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }
        });

    }
}

查看打印日志

目录里面有一个cache 系统默认生成

它们2个存放的目录为  Android /date /应用的包名/.... 如果应用卸载了,那么缓存到他们里面的内容也随之删除了。

以上2个demo 可以看的出的。。。。。。。。。。。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值