【问题标题】:Loading array from a text file in assets folder (Android)从资产文件夹中的文本文件加载数组(Android)
【发布时间】:2013-12-26 07:39:06
【问题描述】:

请,

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

我的资产文件夹中有一个名为 word.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 文件夹、Asset 文件夹和许多我不熟悉的其他语言。我刚刚学习开发安卓应用,java经验有限。

【问题讨论】:

标签: java android eclipse


【解决方案1】:

可以如下图所示:

    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();
    }

【讨论】:

    【解决方案2】:

    使用这个:

    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);
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用xml来加载如下的单词:

      res/values/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

      【讨论】:

        【解决方案4】:

        把你的数组放在里面 res/values/strings.xml 为

         <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);
        

        【讨论】:

          猜你喜欢
          • 2011-08-04
          • 2022-01-21
          • 1970-01-01
          • 2014-01-21
          • 2012-09-05
          • 2017-12-05
          • 1970-01-01
          • 2021-08-19
          • 1970-01-01
          相关资源
          最近更新 更多