我有一个文本文件,其值的格式为:
[id1] text1
[id2] text2
...
我想知道是否有人可以告诉我如何读取这个文本文件并将其写入 java 中的 hashmap。任何指针表示赞赏。
编辑:是的。我还没试过。到目前为止,我刚刚能够从文件中读取条款并将其打印在文本文件中。我只是在看指针。谢谢。
我有一个文本文件,其值的格式为:
[id1] text1
[id2] text2
...
我想知道是否有人可以告诉我如何读取这个文本文件并将其写入 java 中的 hashmap。任何指针表示赞赏。
编辑:是的。我还没试过。到目前为止,我刚刚能够从文件中读取条款并将其打印在文本文件中。我只是在看指针。谢谢。
您可以阅读每一行并使用正则表达式,例如:
"\\[(.*?)\\]\\s*(.*)"
然后第一组将包含 ID,第二组将包含值。
我不会给出代码,因为您甚至还没有真正尝试过任何东西,但是您可以查看Pattern和Matcher类。(这两个类的名称是链接)
正则表达式的解释:
\\[ - open bracket (escaped)
(.*?) - capturing stuff inside the brackets
\\] - close bracket
\\s* - whitespace
(.*) - everything after that (the data)
如果您的文本文件小到可以保存在对象中(例如 hashmap),您可以保存。或者您必须考虑其他解决方案。例如,您有一个 20GiB 的文本文件。
您可以通过以下方式拆分您阅读的行:
String[] arr = line.split("(?<=])\\s+", 2)
然后你把它放在你的HashMap(比如yourMap)中
yourMap.put(arr[0], arr[1])
我在这里做了一个小例子:
final String a = "[001] text here";
final String b = "[001] text [tricky] here";
final String c = "[0 0 1] text here";
final String regex = "(?<=])\\s+";
// if you want to test it, you would see key/value are correctly splited
System.out.println(Arrays.toString(a.split(regex, 2)));
System.out.println(Arrays.toString(b.split(regex, 2)));
System.out.println(Arrays.toString(c.split(regex, 2)));
//--------------------------------------
//here is the part to put them into your file
HashMap<String,String> yourMap = new HashMap<String,String>();
String[] array = null;
//for each line from that file {
array = line.split(regex,2);
yourMap.put(array[0], array[1]);
//}for loop ends