Java读取文本文件并将每行保存为新的字符串数组

时间:2013-04-06 15:45:18

标签: java android arrays string file

我正在尝试构建一个能够读取文本文件的应用程序,然后将每行文本存储为数组列表。

这是我的文本文件:

1 , Where is the white house? , Paris , Amsterdam , New York , Washington 
2 , The Sopranos Is a..? , Italian Food , Tv series , Kind of Knife , A Book
3 , The Capital City Of Brazil is? , Rio de Janeiro, Amsterdam , Brazilia , Washington
4 ,Who Invanted The Phone ?, Alexander Graham Bell, Albert Einstein , Pinokio , Snoop Doog 

我基本上试图构建一个琐事应用程序,它将从文本文件中选择每一行,然后将所选行拆分为字符串数组,最后在屏幕上打印一个问题和四个答案。

到目前为止,这是我的代码:

public class QuestionSql extends Activity {

    private String[] value;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.highscore);
        readFile();

    }


    private void readFile() {
        // TODO Auto-generated method stub
        AssetManager manger;
        String line = null;

        try {
            manger = getAssets();
            InputStream is = manger.open("text.txt");
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            while ((line = br.readLine()) != null) {
                value = line.split(",");


                //System.out.print(value);
            }
            br.close();


        } catch (IOException e1) {
            System.out.println("not good");

        }

    }

}

问题是app只打印文本文件的最后一行


谢谢你的答案,这真的对我有所帮助! 到目前为止,这是我的代码:

公共类QuestionSql扩展了Activity {

private String[] value;
private List<String[]> collection;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.highscore);

    readFile();
    convertListToString()
}


  private void convertListToString() {


    value = collection.toArray(new String[collection.size()]);

  }







private void readFile() {
    // TODO Auto-generated method stub
    AssetManager manger;
    String line = null;
    collection = new ArrayList<String[]>();

    try {
        manger = getAssets();
        InputStream is = manger.open("text.txt");
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        while ((line = br.readLine()) != null) {
            value = line.split(",");
           collection.add(value);

        }
        br.close();


    } catch (IOException e1) {
        System.out.println("not good");

    }

}

}

现在,我需要转换:collection = new ArrayList(); 到字符串[]所以我可以在我的应用程序按钮上设置文本。任何想法?

3 个答案:

答案 0 :(得分:1)

如果要将每一行存储到字符串数组中,则需要创建“字符串数组结构”

因此,最有效的选择是创建将保存字符串数组的List<String[]>

你的方法不起作用的原因是你为每一行分配了相同字符串数组的新值(总是被重写),并且在循环之后你的字符串数组包含了最后一行的值。

List<String[]> collection = new ArrayList<String[]>();
String[] temp;
while ((line = br.readLine()) != null) {
   temp = line.split(",");
   if (temp.length > 0) {
      collection.add(temp);
   }
}

但是如果你想创建只包含你的值的List(我有点困惑)你可以使用:

List<String> collection = new ArrayList<String>();
String[] temp;
while ((line = br.readLine()) != null) {
   temp = line.split(",");
   if (temp.length > 0) {
      for (String s: temp) {
         collection.add(s);
      }
   }
}

答案 1 :(得分:0)

您可以将所有拆分行存储到ArrayList

private ArrayList<String[]> values;
@Override
protected void onCreate(Bundle savedInstanceState) {
    values = new ArrayList<String[]>();
    super.onCreate(savedInstanceState);
    setContentView(R.layout.highscore);
    readFile();
}


private void readFile() {
    // TODO Auto-generated method stub
    AssetManager manger;
    String line = null;

    try {
        manger = getAssets();
        InputStream is = manger.open("text.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();

    } catch (IOException e1) {
        System.out.println("not good");
    }
}

答案 2 :(得分:0)

你能试试吗

private void readFile() {
    // TODO Auto-generated method stub
    AssetManager manger;
    String line = null;

    try {
        manger = getAssets();
        InputStream is = manger.open("text.txt");
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        while ((line = br.readLine()) != null) {
           String[] value = line.split(",");

           for(int i=0;i<value.length;i++)
               System.out.print("*************************************************"+value[i]);
        }
        br.close();


    } catch (IOException e1) {
        System.out.println("not good");

    }

}
相关问题