Android资产文件夹中包含子文件夹

28
InputStream myInput = myContext.getAssets().open("MyFolder/" + "MyFile.db3");

我在assets文件夹中有一个子文件夹内的文件,但它无法获取该文件。有没有特殊的方法来指定assets文件夹中的子文件夹?

Ian


1
看起来没问题 - 是否会抛出任何异常,如IOException? - Roman Nurik
是的,但奇怪的是异常是空的,没有“原因”。 - Ian Vink
如果您能将堆栈跟踪粘贴到原始问题中,那将非常有帮助。 - Roman Nurik
你是否可能正在使用错误的区域设置加载输入流? - Robert Massaioli
4个回答

44

编辑:关于子文件夹的说法是错误的。
这段代码在1.5版本上完全正常(对于放置在assets文件夹下的sub文件夹中的sample.txt文件):

InputStream is = getAssets().open("sub/sample.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = br.readLine()) != null) {
    Log.e("wtf", line);
}
br.close();

您确定名字都正确吗?


8
"MyFolder/" + "MyFile.db3"

添加到资产文件夹的文件名必须为小写字母。 因此,像“ MyFolder”和“Myfile.db3”这样的文件名是无效的。将它们重命名为“ myfolder”和“ myfile.db3”,然后一切都会变好。


6

您的资产文件是否超过1MB?

我注意到,如果我尝试打开一个超过此大小的资产,我会收到相同的奇怪、空的IOException。它位于子文件夹中可能是一个误导。我正在尝试打开一个大型文本文件,以便通过分割来解决此限制。您能否对您的.db3文件进行类似的操作?


天啊,这是一个愚蠢的错误,他们应该修复它。非常感谢你写下这个答案,对我来说情况确实是一样的,在“music/blah.ogg”下有一个超过1MB的.ogg文件,所以不能工作,但另一个文件“music/foo.ogg”只有26KB,却可以正常工作... - David T.

0

我遇到了类似的问题:将子文件夹名称从“mp3”更改为“mpthree”,然后就可以找到文件了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接