getCacheDir()下的子目录

时间:2018-07-06 20:56:21

标签: java android directory subdirectory

我正在尝试在我的应用程序缓存文件夹中创建子目录,但是在尝试检索文件时却一无所获。我下面有一些关于如何创建子目录以及如何从中读取代码的代码,也许我只是做错了什么(显然我是大声笑),或者这不可能吗? (尽管我没见过你看不见的地方)。谢谢大家的帮助!

创建子目录

File file = new File(getApplicationContext().getCacheDir(), "SubDir");
                        File file2 = new File(file, each_filename);
                        Toast.makeText(getApplicationContext(), file2.toString(), Toast.LENGTH_SHORT).show();

                        stream = new FileOutputStream(file2);
                        stream.write(bytes);

从中读取

File file = new File(context.getCacheDir(), "SubDir");
    File newFile = new File(file, filename);

    Note note;

    if (newFile.exists()) {
        FileInputStream fis;
        ObjectInputStream ois;

        try {
            fis = new FileInputStream(new File(file, filename));
            ois = new ObjectInputStream(fis);

            note = (Note) ois.readObject();

            fis.close();
            ois.close();

        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
            return null;
        }

        return note;
    }

我也尝试过这个,什么也没做

String file = context.getCacheDir() + File.separator + "SubDir";

2 个答案:

答案 0 :(得分:1)

我在您实际创建子目录的代码中看不到任何地方。这是一些示例代码,如果路径不存在,则通过调用mkdirs将文件保存在子目录中(此处的某些部分需要包装在IOException的适当try-catch中,但这应该可以帮助您入门。)

File cachePath = new File(context.getCacheDir(), "SubDir");
String filename = "test.jpeg";
boolean errs = false;

if( !cachePath.exists() ) {
    // mkdir would work here too if your path is 1-deep or
    // you know all the parent directories will always exist
    errs = !cachePath.mkdirs();
}

if(!errs) {
    FileOutputStream fout = new FileOutputStream(cachePath + "/" + filename);
    fout.write(bytes.toByteArray());
    fout.flush();
    fout.close();
}

答案 1 :(得分:0)

您需要使用mkdir来建立目录。

在您的代码中:

File file = new File(getApplicationContext().getCacheDir(), "SubDir");
file.mkdir();
File file2 = new File(file, each_filename);