2010-06-13 98 views
22
InputStream myInput = myContext.getAssets().open("MyFolder/" + "MyFile.db3"); 

我在资产文件夹中的一个子文件夹中的文件如上。它不会获取文件,是否有一种特殊的方式来指定资产文件夹中的子文件夹?Android资产与子文件夹

Ian

+1

看起来是正确的 - 是否有任何异常(如抛出IOException)? – 2010-06-13 21:20:14

+0

是的,但奇怪的是,例外是空的,没有“原因” – 2010-06-13 22:13:16

+0

如果你可以将堆栈跟踪粘贴到你原来的问题中,那会很有帮助。 – 2010-06-13 23:56:02

回答

39

编辑:关于子文件夹错了。
此代码工作在1.5就好了(在assetssub文件夹下放置一个文件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(); 

你确定你有名字吗?

+0

文档说,你可以。 – 2010-06-13 23:39:59

5

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

我注意到,如果我尝试打开超过此大小的资产,我会得到相同的奇数空IOException。它在子文件夹中的事实可能是一条红鲱鱼。我试图打开一个大的文本文件,所以我可以通过分割来解决这个限制。你能做类似于你的.db3文件吗?

+0

omfg wtf !!!这是一个愚蠢的错误,他们应该解决这个问题。非常感谢你写这个答案,这对我来说也是一样的情况,我在“music/blah.ogg”下有一个.ogg文件,因为它已经超过1 MB而不工作,但另一个文件“music/foo.ogg“的作品,它只有26 kb ... – 2012-09-08 11:11:06

5
"MyFolder/" + "MyFile.db3" 

添加到资产文件夹的文件的文件名必须使用小写字母。 因此,MyFolder和Myfile.db3等文件名无效。将它们重命名为“myfolder”和“myfile.db3”,那么一切都会好起来的。