当前位置: 首页 > 面试题库 >

读取文本文件并将其拆分为数组-Android

白博易
2023-03-14
问题内容

我已经解决了这些问题,但似乎仍然无法解决。我有一个文本文件,分为几行。每行包含5个数据,中间用“,”分隔。我正在尝试读取此文件并将信息拆分为以下形式的字符串数组

String [][] xyz = new String [5][100];

请有人可以帮我解决一个简单的解决方案!?谢谢!!!:)

数据示例:

John,22,1953,Japan,Green
Anna,18,2012,Mexico,Blue
Sam,34,1976,San Francisco,Pink

样例代码:

公共无效的readFile(){

    AssetManager manger;
    String line = null;

    try {
        manger = getAssets();
        InputStream is = manger.open("data.txt");
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        while ((line = br.readLine()) != null) {
            values.add(line.split(","));
            //System.out.print(value);

        }
        br.close();


        String[] array = values.toArray(new String[20];


    } catch (IOException e1) {
        Toast.makeText(getBaseContext(), "Problem!", Toast.LENGTH_SHORT).show();
    }
}

错误

07-24 06:26:56.524:E / AndroidRuntime(27203):致命例外:主要07-24 06:26:56.524:E /
AndroidRuntime(27203):java.lang.ArrayIndexOutOfBoundsException:length = 10;
index = 10 07-24 06:26:56.524:E / AndroidRuntime(27203):at
com.testingReadArray.weebly.testingReadArray.MainActivity.readFile(MainActivity.java:182)07-24
06:26:56.524:E / AndroidRuntime
(27203):位于com.testingReadArray.weebly.testingReadArray.MainActivity $
planOnClickListener.onItemSelected(MainActivity.java:148)07-24 06:26:56.524:E
/ AndroidRuntime(27203):位于android.widget.AdapterView.fireOnSelected(
AdapterView.java:895)07-24 06:26:56.524:E /
AndroidRuntime(27203):在android.widget.AdapterView.access $
200(AdapterView.java:50)07-24 06:26:56.524:E / AndroidRuntime
(27203):位于android.widget.AdapterView $
SelectionNotifier.run(AdapterView.java:863)07-24 06:26:56.524:


问题答案:

您可以使用BufferedReader读取每一行,然后使用.split(',');方法拆分该行。

一些伪代码:

BufferedReader bfr = new BufferedReader(InputStreamReader/FileReader...);
String line = null;
int index = 0;
String [][] xyz = new String [100][5];

while ( (line = bfr.readLine()) != null) {
    if (index < xyz.length) xyz[index] = line.split(",");
    index++;
}

希望这对您有所帮助!



 类似资料:
  • 我读过其他一些类似于此的问题,但都使用了imports和extras,除了importjava.io.*之外,我不想使用任何imports;也没有任何名单。另外,这个is方法中的for循环是我在搞乱它,因为我无法弄清楚它。 }public static void main(string[]args)抛出IOException,FileNotFoundException{int[]array=pro

  • 问题内容: 我有一个文件,我想用Java读取并将其拆分为(用户输入)输出文件。这是我读取文件的方式: 如何将文件拆分为文件? 注意-由于文件中的条目数约为100k,因此我无法将文件内容存储到数组中,然后将其拆分并保存到多个文件中。 问题答案: 由于一个文件可能很大,因此每个拆分文件也可能很大。 例: 源文件大小:5GB 数字分割:5:目的地 档案大小:每个1GB(5个档案) 即使我们有这样的内存,

  • 问题内容: 我有一些带有时间信息的文本文件,例如: 现在,我需要文件的第三列来计算平均值。 我怎样才能做到这一点?我需要获取所有文本行,然后获取最后一列? 问题答案: 您可以阅读通过线使用的文件中的行或,甚至一些其他techinique。使用扫描仪非常简单,如下所示: 要使用定义的分隔符分割字符串,可以使用split方法,该方法将正则表达式作为参数,并按与该表达式匹配的所有字符序列分割字符串。就您

  • 问题内容: 我设法根据逗号分割了CSV文件。我通过将虚拟字符串放置在有’,’的位置,然后根据虚拟字符串进行拆分来完成此操作。 但是,CSV文件包含以下内容: 因此,在有新行的地方,每行的最后一个值和第一个值合并到自己的字符串中。我该如何解决?我试图将我的虚拟字符串放置在此处,但据此将其拆分,但没有成功。 救命?! 问题答案: 我强烈建议您不要重新发明轮子:)。使用一个已经可用的库来处理CSV文件,

  • 问题内容: 我有以下问题:我有一个近500mb的文件。它的文字全部排成一行。文本以虚拟行结尾分隔,称为ROW_DEL,并在文本中如下所示: 现在我需要进行以下操作,我想将此文件分成几行,这样我得到一个文件: 这个问题,即使我使用Windows文本编辑器将其打开,也会由于文件太大而中断。 是否可以像我在C#,Java或Python中提到的那样拆分此文件?什么是最好的灵魂,不要过度杀伤我的CPU。 问

  • 问题内容: 我知道如何使用和File IOException 读取文件,但是我唯一不知道的是如何将文本作为数组存储在文件中。 这是我的代码: 这是我的文件包含的内容: 问题答案: 存储为字符串: 对于花车: