在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 可以看的出的。。。。。。。。。。。