问题
I have tried to make sense of the getFileStreamPath madness for some hours now. Could someone please explain how to test if a path = "shop/crates/fruits" exists? In an attempt to simplify the test i have broken the path in to segments. I thought i had it. But the test breaks when shop exists but there is no crates..Weird! Or is it?
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;
}
回答1:
Yeah, the crappy android APIs. The secret sauce is to use context.getFilesDir(). That's your file:
File file = new File(context.getFilesDir() + File.separator + path);
After that, the file behaves normally.
回答2:
First, the getFileStreamPath
returns the absolute path on the filesystem where a file created with openFileOutput(String, int) is stored.
Are you trying to test the internal or external storage's path? If you want to use external storage use getExternalFilesDir()
. If you want to use internal package embedded resources like res/raw
, it's another story:
Android how to get access to raw resources that i put in res folder?
But I don't think it will work the way you are presuming to get it.
Read this http://developer.android.com/guide/topics/data/data-storage.html carefully.
Read Using the Internal Storage
chapter there.
Also see:
How to create a file on Android Internal Storage?
Read/write file to internal private storage
http://www.vogella.de/articles/AndroidFileSystem/article.html
来源:https://stackoverflow.com/questions/9270098/i-cant-make-sense-context-getfilestreampath-trying-to-test-wether-a-file-path-e