如何从文本文件中读取并存储到android中的数组中

时间:2014-06-14 06:12:38

标签: android file filereader phone-number stringbuffer

Hie Friends

我正在开发一个Android应用程序,该文本文件应该生成一些数字。在此之后,逐个申请应该拨打这些号码。

例如:

9876452125, 9876452135, 9876452115,

大多数情况下,文本文件有8个数字,由","分隔。和新线" \ n"

现在我想逐行阅读该文件。

我的读取文件和存储到数组的代码是:

public void read(String fname)
    {
        BufferedReader br = null;
        try
        {
            StringBuffer output = new StringBuffer();
            String fpath = "/sdcard/" + fname + ".txt";
            br = new BufferedReader(new FileReader(fpath));
            String line = null;
            int index = 0;

            String[][] num = new String[15][10];

            List<String[]> collection = new ArrayList<String[]>();
            while ((line = br.readLine()) != null)
            {
                if (index < num.length)
                {

                    output.append(line);
                    // output.append("\n");

                    num[index] = line.split(",");

                    if (num.length > 0)
                    {
                        collection.add(num[index]);
                    }
                }
                Toast.makeText(getApplicationContext(), "" + collection, 5000)
                        .show();
                index++;

            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

现在我的问题是当我将集合打印到Toast时它会显示一些随机字符串。我不知道为什么?

对于如何逐行读取文件并存储到数组,是否有任何人有正确的想法或示例代码。

感谢分配。

2 个答案:

答案 0 :(得分:2)

如果我是你,我会使用扫描仪。您还没有提供有关您计划如何存储它们的信息:例如,您使用String[][] num = new String[15][10];的原因,但我会举例说明您是否希望将每个数字存储在其中{39} ; s自己的元素,你可以根据需要进行调整(我假设文件中每行末尾只有一个换行符。)

public void read(String fname) {
    String fpath = "/sdcard/" + fname + ".txt";
    File file = new File(fpath); 
    Scanner scanner = new Scanner(new FileInputStream(file));
    List<String[]> collection = new ArrayList<String[]>();

    while (scanner.hasNextLine()){
    String line = scanner.nextLine();
            String.replaceAll("\n", ""); // strip the newline
            String[] myList = myString.split(",");
            for (i=0; i < myList.length; i++) {
                  collection.add(myList[i]);
            }       
    }
scanner.close();
}

这里没有任何Android元素,但就像我说过你可以根据需要进行调整以完成你特别需要它做的事情。

答案 1 :(得分:1)

   ArrayList<ArrayList<String>> myArray = new ArrayList<ArrayList<String>>();

    ArrayList<String> stringArray = new ArrayList<String>();
    String random = "9876452125, 9876452135, 9876452115,";

    String[] splitArray = random.split(",");

    for (int i = 0; i < splitArray.length; i++) {

        stringArray.add(splitArray[i]);
    }

    myArray.add(stringArray);

    // printing all values
    for (int i = 0; i < myArray.size(); i++) {
        for (int j = 0; j < myArray.get(i).size(); j++) {

            System.out.println("values of index " + i + " are :"
                    + myArray.get(i).get(j));
        }
    }