从资源文件夹(Android)中的文本文件加载数组

时间:2013-12-26 07:39:06

标签: java android eclipse

请,

我知道这个问题已被多次询问,但我仍然无法让我的代码工作。

我的资源文件夹中有一个名为words.txt的文本文件。该文本文件的每一行中每行有一个单词,没有空行。我想把每个单词放在一个数组中。

首先我尝试使用扫描仪,但在阅读了很多stackoverflow线程后,我发现我需要使用AssetManager。

这是我试过的:

AssetManager assetManager = getAssets();
InputStream inputStream = assetManager.open("words.txt");

在我做任何其他事情之前,它给出了错误消息:default constructor cannot handle exception type IOException thrown by implicit super constructor...。我不知道这意味着什么。

另外,看看api,似乎InputStream只能读取字节。如何从文本文件中读取文字?

线程是压倒性的,因为看起来每个答案提出了一个不同的方法,使用InputStreams,BufferedStreams,FileInputStreams,File,Res文件夹,资产文件夹以及许多我不熟悉的其他语言。我只是在学习开发Android应用程序,并且Java经验有限。

4 个答案:

答案 0 :(得分:4)

您可以执行以下操作:

    try {
        BufferedReader bReader = new BufferedReader(new InputStreamReader(getAssets().open("file.txt")));
        ArrayList<String> values = new ArrayList<String>();
        String line = bReader.readLine();
        while (line != null) {
            values.add(line);
            line = bReader.readLine();
        }
        bReader.close();
        for (String v : values)
            Log.i("Array is ", v);
    } catch (IOException e) {
        e.printStackTrace();
    }

答案 1 :(得分:0)

使用此:

Resources rs = getResources();
InputStream inputStream = rs.openRawResource(R.raw.sample);
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
while ((line = r.readLine()) != null) {
    array.append(line);
}

答案 2 :(得分:0)

您可以使用xml加载以下字词:

<强> RES /值/ strings.xml中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
    </string-array>
</resources>

在课程档案中​​

Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array);

Source

答案 3 :(得分:0)

把你的数组放进去 res / values / strings.xml as

 <string-array name="spinnerNames">
    <item>Trust</item>
    <item>Grade</item>
    <item>Location</item>
    <item>Contract Type</item>
    <item>Speciality</item>

</string-array>

并将数组加载为:

 String[] spinnerNames = getResources().getStringArray(R.array.spinnerNames);