Java阅读带分隔符的文本文件并推入数组

时间:2016-04-29 17:20:53

标签: java arrays delimiter delimited-text

我正在读取一个在元素之间有分隔符的文件。我试图将每个元素放入一个新的数组索引。这似乎不能正常工作,一切似乎最终都在数组的一个索引上。下面是一个示例文本文件和我的代码。

文本文件

%User  %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel%James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel

代码

final InputStream i = getResources().openRawResource(R.raw.users);
final Scanner s = new Scanner(i);
try
{
    while (s.hasNextLine())
    {
        String d = s.nextLine();
        String test;

        test = values[1];           
        userTextArea.append(test);
        test = "";
    }
}

3 个答案:

答案 0 :(得分:0)

.button-container

答案 1 :(得分:0)

您必须使用拆分功能。

String tmp = "%hallo %world";
String [] strArray = tmp.split("%");
System.out.print(strArray[0]); //prints hallo 

答案 2 :(得分:0)

数组是一个容器对象,它包含存储在唯一索引(位置)中的固定数量的值。

<强>原因

  

一切似乎最终都在数组的一个索引

对于两个原因,它会这样做:

  1. 您正在阅读的文件没有换行符。因此,它会将所有文件内容分配给变量&#34; d &#34;当你打电话给 nextLine()时。

       String d = s.nextLine();
       String[] values = d.split("%");
    
       for(String value: values) {
          userTextArea.append(value.trim());
       }
    

    在您的计划中,此时要澄清&#34; d &#34;保存您的整个文本文件。

  2. 即使它确实有新行字符,你仍然不会在数组中读取任何内容。将字符串分配给变量&#34; d &#34;。你没有做任何事情。

  3. <强>建议

    这样做的一种方法是:

    • 按原样读取文件,然后使用字符串 split()函数用于拆分元素,此函数返回一个数组,因此您需要将其分配给 String []数组变量。 省略 while循环因为你只需要阅读一行。在此之后,循环 通过字符串数组并将值附加到文本区域:

        db.foo.update({}, { $pull: { "activities.procedures.implications_ids"  : ObjectId("50871f11d52ef600020128a2") }},  { multi: true } )
      

      在追加时,不要忘记修剪字符串,因为您的文件在元素之间包含空格。 String trim()函数将删除这些。