gpt4 book ai didi

java - 我应该如何用Java解析这个简单的文本文件?

转载 作者:行者123 更新时间:2023-12-02 02:54:38 26 4
gpt4 key购买 nike

我有一个如下所示的文本文件:

grn129          agri-
ac-214 ahss
hud114 ahss
lov1150 ahss
lov1160 ahss
lov1170 ahss
lov1210 ahss

如果我想创建一个第一列作为键、第二列作为值的 HashMap,使用 Java 解析此文件的最佳方法是什么。

我应该使用 Scanner 类吗?尝试将整个文件作为字符串读取并拆分它?

最好的方法是什么?

最佳答案

这就是我要怎么做的!自 2000 年以来,我几乎就是一名 Java 程序员,所以这可能有点过时了。有一句话让我特别自豪:

new InputStreamReader(fin, "UTF-8");

http://www.joelonsoftware.com/articles/Unicode.html

享受吧!

import java.io.*;
import java.util.*;

public class StackOverflow2565230 {

public static void main(String[] args) throws Exception {
Map<String, String> m = new LinkedHashMap<String, String>();
FileInputStream fin = null;
InputStreamReader isr = null;
BufferedReader br = null;
try {
fin = new FileInputStream(args[0]);
isr = new InputStreamReader(fin, "UTF-8");
br = new BufferedReader(isr);
String line = br.readLine();
while (line != null) {
// Regex to scan for 1 or more whitespace characters
String[] toks = line.split("\\s+");
m.put(toks[0], toks[1]);
line = br.readLine();
}
} finally {
if (br != null) { br.close(); }
if (isr != null) { isr.close(); }
if (fin != null) { fin.close(); }
}

System.out.println(m);
}

}

这是输出:

julius@flower:~$ javac StackOverflow2565230.java 
julius@flower:~$ java -cp . StackOverflow2565230 file.txt
{grn129=agri-, ac-214=ahss, hud114=ahss, lov1150=ahss, lov1160=ahss, lov1170=ahss, lov1210=ahss}

是的,我的电脑的名字是Flower。以小鹿斑比的臭鼬命名。

最后一点:因为 close() 可以抛出 IOException,所以这就是我真正关闭流的方式:

} finally {
try {
if (br != null) br.close();
} finally {
try {
if (isr != null) isr.close();
} finally {
if (fin != null) fin.close();
}
}
}

关于java - 我应该如何用Java解析这个简单的文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2565230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com