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

时间:2012-02-14 12:19:13

标签: android android-file

  

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

     

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

     

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

file.mkdirs(); 更改为 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;
}

1 个答案:

答案 0 :(得分:6)

  

是否可以使用内部存储

创建和维护包含文件的文件夹结构

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

  

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

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

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

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