如何使用getExternalCacheDir()在应用程序的缓存下创建子文件夹?

时间:2017-12-27 10:55:16

标签: android caching

在我的应用程序中,我想在应用程序缓存中保存一些文档。使用后我想从缓存中清除这些文件。如果我清除缓存,所有保存的数据都将丢失,但我不希望这样。我需要在我的缓存下创建一个子文件夹,我想在某些用途后从该缓存文件夹中读取数据我想要清除该特定文件夹中的数据。

如何使用getExternalCacheDir()

执行此操作

我尝试使用以下代码段

File tempFile = new File(AppDelegate.sharedDelegate().getExternalCacheDir()+"\documentfolder\", name + ext);
OutputStream outputStream = new FileOutputStream(tempFile);
IOUtils.copy(inputStream, outputStream);
outputStream.close();
return tempFile;

但我得到了

System.err: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.package.debug/cache/documentcache/Screenshot_20171108-011217.png.png (No such file or directory)
W/System.err:     at java.io.FileOutputStream.open(Native Method)
W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:169)

我该如何解决?

2 个答案:

答案 0 :(得分:0)

这应该有效:

File tempFile = new File(dir, name + ext);

OutputStream outputStream = new FileOutputStream(tempFile);
IOUtils.copy(inputStream, outputStream);
outputStream.close();
return tempFile;

然后使用dir作为文件的父文件夹:

savegame.close()

答案 1 :(得分:0)

getCacheDir()。它返回特定于应用程序的缓存目录的绝对路径

File myDir = new File(getCacheDir(), "yourfolder");
myDir.mkdir();

然后使用下面的代码创建文件。

File f = new File(your directyorypath + "filename.txt");

if (f.exists()) 
{
    f.delete();
}

f.createNewFile();