【问题标题】:How to Read from text file and Store into an Array in android如何从文本文件中读取并存储到android中的数组中
【发布时间】:2014-08-04 17:04:43
【问题描述】:

朋友们

我正在开发一个 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 时,它会显示一些随机字符串。不知道为什么??

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

感谢分配。

【问题讨论】:

标签: android file filereader phone-number stringbuffer


【解决方案1】:

如果我是你,我会使用扫描仪。您还没有提供有关您计划如何存储它们的信息:例如,为什么使用String[][] num = new String[15][10];,但我会给您一个示例,说明您是否想将每个数字存储在它自己的元素中,您可以调整是否必要的(我假设文件中每一行的末尾只有一个换行符)。

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 元素,但就像我说的那样,您可以根据需要进行调整以执行您特别需要它执行的操作。

【讨论】:

  • Android 应用程序是用 Java 编写的,对吧?以上是Java。我没有添加的是 Android Toast,因为我不确定您要根据您的代码在 toast 中显示什么。您是否要为文件中的每个数字显示祝酒词?
【解决方案2】:
   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));
        }
    }

【讨论】:

    猜你喜欢
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    相关资源
    最近更新 更多