java - 如何将文本文件内容存储在arrayList..中?

标签 java

我有如下文本文件,我想将其存储在 ArrayList 中,但问题是它没有相同的键值对,即最后 2 个 [Param] 具有 param4=value4,param5=value5。

如何将其存储在 arrayList 或 map 中..?

测试.txt

    [Param]
    param1=value1
    param2=value2
    param3=value3
    [Param]
    param1=value1
    param2=value2
    param3=value3
    [Param]
    param1=value1
    param2=value2
    param3=value3
    [Param]
    param1=value1
    param2=value2
    param3=value3
    [Param]
    param1=value1
    param2=value2
    param3=value3
    param4=value4
   [Param]
    param1=value1
    param2=value2
    param3=value3
    param4=value4
    param5=value5

Java 代码:

public class Task {

    static String Filepath = "C:\\Users\\Administrator\\Desktop\\TASK\\test.txt";
    static ArrayList<String> list1;
    static ArrayList<String> list2;
    static ArrayList<String> list3;
    static HashMap<Integer, ArrayList<String>> map;

    public static void main(String[] args) {
        // TODO code application logic here

        try {
            FileInputStream fstream = new FileInputStream(Filepath);
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine, user;
            int lineNumber = 0;

            list1 = new ArrayList<>();
            list2 = new ArrayList<>();
            list3 = new ArrayList<>();
            map = new HashMap<>();

            // Read File Line By Line
            while ((strLine = br.readLine()) != null) {
                process(strLine);
                lineNumber++;
            }
        } catch (Exception e) {// Catch exception if any
            System.err.println("Error: " + e.getMessage());
        }

        map.put(1, list1);
        map.put(2, list2);
        map.put(3, list3);

        for (int i = 0; i < list1.size(); i++) {
            System.out.println("[Param]");
            System.out.println("param1=" + list1.get(i));
            System.out.println("param2=" + list2.get(i));
            System.out.println("param3=" + list3.get(i));
        }

    }

    public static void process(String str) {

        if (str.contains("param1=")) {
            String[] arr = str.split("param1=");
            ////System.out.println(arr[1].trim());
            list1.add(arr[1].trim());
        } else if (str.contains("param2=")) {
            String[] arr = str.split("param2=");
            //System.out.println(arr[1].trim());
            list2.add(arr[1].trim());
        } else if (str.contains("param3=")) {
            String[] arr = str.split("param3=");
            //System.out.println(arr[1].trim());
            list3.add(arr[1].trim());
        } 
    }     
}

最佳答案

您的文本文件似乎是 Windows INI 文件。 ¿使用 Apache Commons Configuration 怎么样? ?具体来说,INIConfiguration类。

关于java - 如何将文本文件内容存储在arrayList..中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34673469/

相关文章:

java - 输入/输出 Java 示例

java - Windows/NetBeans 平台 - 将 JAVA_HOME 环境变量添加到 conf 文件中

java - 如何使用数组中存储的数据每 24 小时发送一次自动电子邮件 - Android studio

java - JNLP解析异常

java - fragment recyclerview 不同的 View 类型不起作用

java - 修改 tomcat 上静态 Assets 的 header cookie 并使用 apache httpd 代理

java - 无法在 Python 中发布文件 [在 Java 中工作]

java - 从父类(super class)调用子类方法

java - 如何解决 android Admob 中的无广告配置问题?

java - 如何不计算文本文件中的控制字符