是否可以使用内部存储创建和维护包含文件的文件夹结构

Dev*_*ull 2 android android-file

我研究了下面的链接,但它没有回答我的问题. http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

如果标题中的问题答案是肯定的.有人可以提供一个简单的例子来创建一个子文件夹并将文件添加到该文件夹​​吗?并且可能会显示如何从子文件夹中读取文件?

或者也许告诉我为什么下面的例子悲惨地失败了

更改file.mkdirs()立即工作; to file.getParentFile().mkdirs();
请参阅以下答案中的说明

public static void Test(String path, String fileName, String fileStr, Context ctx)
{

    SaveFile(path, fileName, fileStr, ctx);
    String returnFileStr = ReadFile(path, fileName, ctx);
}
public static Boolean pathExists(String path, Context ctx)
{
    Boolean result = false;
    String[] pathSeqments = path.split("/");
    String pathStr = "";
    for(int i = 0;i<pathSeqments.length;i++ )
    {
        pathStr += pathSeqments[i];
        if(!new File(ctx.getFilesDir() +"/" + pathStr).exists())
        {
            result = false;
            break;
        }
        pathStr += "/";
        result = true;
    }
    return result;
}

public static void SaveFile(String path, String fileName, String fileStr, Context ctx) {
    try {           
        File file = new File(ctx.getFilesDir() +"/" + path, fileName); //new File(ctx.getFilesDir() +"/" + path + "/" + fileName);
        file.getParentFile().mkdirs();

        FileOutputStream fOut = new FileOutputStream(file);
        OutputStreamWriter osw = new OutputStreamWriter(fOut);

        osw.write(fileStr);

        osw.flush();
        osw.close();

    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
}

public static String ReadFile(String path, String fileName, Context ctx) {
    String fileStr = null;
    try {           
        if(pathExists(path, ctx))
        {
            File file = new File(ctx.getFilesDir() +"/" + path, fileName);
            FileInputStream fIn = new FileInputStream(file);

            StringWriter writer = new StringWriter();

            IOUtils.copy(fIn, writer, "UTF-8");
            fileStr = writer.toString();
        }

    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
    return fileStr;
}
Run Code Online (Sandbox Code Playgroud)

Com*_*are 6

是否可以使用内部存储创建和维护包含文件的文件夹结构

是的,使用标准Java I/O.

或者也许告诉我为什么下面的例子悲惨地失败了

才华横溢的程序员知道如何描述症状,而不是使用像"悲惨失败"这样毫无意义的短语.

话虽如此,file.mkdirs();创建一个目录.然后尝试打开该目录,就像它是一个文件一样,用于向其写入数据.这对我所知道的任何操作系统都不起作用,当然也不适用于Android.请调用mkdirs()将创建文件父目录的内容(例如,file.getParentFile().mkdirs()).

此外,永远不要使用连接来创建File对象.使用正确的File构造函数.

  • 谢谢,这节省了我的一天(少了一晚).才华横溢的程序员知道如何描述症状,而不是使用像"悲惨失败"这样毫无意义的短语.恩,如果他们真的很累又很生气.这不是一个毫无意义的评论.如果你考虑它,它会说很多.我可能不是一个有才华的程序员.我恰好是那个必须解决这里所有问题的人.当你猜不到方法getParentFile应该在早上6点被称为getParentFolder时,它会变得非常令人沮丧.但你的权利我可以更准确. (2认同)