3

几个小时以来,我一直试图理解 getFileStreamPath 的疯狂。有人可以解释一下如何测试 path = "shop/crates/fruits" 是否存在吗?为了简化测试,我打破了分段的路径。我以为我有它。但是当商店存在但没有板条箱时,测试就会中断..奇怪!或者是吗?

public static Boolean pathExists(String path, Context ctx)
{
    Boolean result = false;
    String[] pathSegments = path.split("/");
    String pathStr = "";
    for(int i = 0;i<pathSegments.length;i++ )
    {
        pathStr += pathSegments[i];
        if(!ctx.getFileStreamPath(pathStr).exists())
        {
            result = false;
            break;
        }
        pathStr += "/";
        result = true;
    }
    return result;
}
4

2 回答 2

2

是的,糟糕的android API。秘诀是使用 context.getFilesDir()。那是你的文件:

File file = new File(context.getFilesDir() + File.separator + path);

之后,该文件将正常运行。

于 2013-09-17T12:46:32.193 回答
0

首先,getFileStreamPath返回文件系统上存储使用 openFileOutput(String, int) 创建的文件的绝对路径。

您是否尝试测试内部或外部存储的路径?如果要使用外部存储,请使用getExternalFilesDir(). 如果你想使用内部包内嵌资源,比如res/raw,那就另当别论了:

Android 如何访问我放在 res 文件夹中的原始资源?

但我认为它不会像你假设的那样工作。

仔细阅读这个http://developer.android.com/guide/topics/data/data-storage.html 。

阅读Using the Internal Storage那里的章节。

另见:

如何在 Android 内部存储上创建文件?

读/写文件到内部私人存储

http://www.vogella.de/articles/AndroidFileSystem/article.html

于 2012-02-14T00:53:35.107 回答