![](/img/trans.png)
[英]How to access the audio files directly from raw/res folder using index
[英]using big files from res/raw
我正在尝试开发使用来自res / raw的源文件的字典应用程序。 当我使用较小的文件时,它可以工作,但不能使用我必须使用的cca 5mb文件。
我决定将其分成几部分并以这种方式使用,因为似乎android对资产文件夹(1mb?)有一些文件大小限制。 但是它不能以这种方式工作,它会在程序中加载某些内容,而不是所有词典文件。 似乎是什么问题? 我在这方面走错了吗?
private void loadWords() throws IOException {
final Resources resources = mHelperContext.getResources();
InputStream inputStream = resources.openRawResource(R.raw.definitions1);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
ucitaj(reader);
InputStream inputStream2 = resources.openRawResource(R.raw.definitions2);
BufferedReader reader2 = new BufferedReader(new InputStreamReader(inputStream2));
ucitaj(reader2);
InputStream inputStream3 = resources.openRawResource(R.raw.definitions3);
BufferedReader reader3 = new BufferedReader(new InputStreamReader(inputStream3));
ucitaj(reader3);
InputStream inputStream4 = resources.openRawResource(R.raw.definitions4);
BufferedReader reader4 = new BufferedReader(new InputStreamReader(inputStream4));
ucitaj(reader4);
InputStream inputStream5 = resources.openRawResource(R.raw.definitions5);
BufferedReader reader5 = new BufferedReader(new InputStreamReader(inputStream5));
ucitaj(reader5);
InputStream inputStream6 = resources.openRawResource(R.raw.definitions6);
BufferedReader reader6 = new BufferedReader(new InputStreamReader(inputStream6));
ucitaj(reader6);
-
private void ucitaj(BufferedReader reader) throws IOException {
Log.d(TAG, "Loading words...");
try {
String line;
while ((line = reader.readLine()) != null) {
String[] strings = TextUtils.split(line, " -- ");
if (strings.length < 2) continue;
long id = addWord(strings[0].trim(), strings[1].trim());
if (id < 0) {
Log.e(TAG, "unable to add word: " + strings[0].trim());
}
}
} finally {
reader.close();
}
Log.d(TAG, "DONE loading words.");
}
我很确定-分成几个资源是没有用的,因为无论如何您最终都将所有文件读入RAM /堆中,而大小是有限的。 在类似情况下(我需要在TextView中显示相对较大的文本),我使用实现CharSequence
接口的特殊类克服了这种情况。 实际上,CharSequence有几种抽象方法可用于在大文件中对必要的片段进行分块/定位,例如:
abstract char charAt(int index)
abstract CharSequence subSequence(int start, int end)
可能在您的情况下可能会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.