有这样一个文件,几百行,每行必须是TreeMap中的一对。
строка1;сторка2
строка3;сторка5
每行必须匹配 Map 中的一对;
这些行需要从文本文件中读取并传递给 TreeMap 以便它们按顺序排序
public void read() {
File dir= new File(path);
try (
FileInputStream fileInputStream = new FileInputStream(dir);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8);
BufferedReader reader = new BufferedReader(inputStreamReader)){
TreeMap <String, String> map = new TreeMap<>();
while (reader.readLine() != null) {
System.out.println(reader.readLine());
// считываем остальные строки в цикле
String s1 = reader.readLine();
System.out.println(s1);
}
} catch (FileNotFoundException e) {
logger.error(FILE_NOT_FOUND_ERR, e);
} catch (IOException e) {
logger.error(INFO_MESS, e);
}
System.out.println("\n" + dir.getAbsolutePath() + "\n");
logger.info(INFO_MESS);
}
我尝试了这种方法但没有结果
Map<String, String> kvs =
Arrays.asList(reader.readLine())
.stream()
.map(elem -> elem.split(";"))
.filter(elem -> elem.length==2)
.collect(Collectors.toMap(e -> e[0], e -> e[1]));
这就是它的工作原理
try (
FileInputStream fileInputStream = new FileInputStream(directory);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8);
BufferedReader reader = new BufferedReader(inputStreamReader)){
Map <String, String> book = new TreeMap<>();
String line;
while (( line = reader.readLine() ) != null) {
Map <String, String> map =
Arrays.asList(line)
.stream()
.map(elem -> elem.split(";"))
.filter(elem -> elem.length==2)
.collect(Collectors.toMap(e -> e[0], e -> e[1]));
System.out.println(map);
for(Map.Entry<String, String> item : map.entrySet()){
book.put(item.getKey(), item.getValue());
}
}
System.out.println(book);
} catch (FileNotFoundException e) {
logger.error(FILE_NOT_FOUND_ERR, e);
} catch (IOException e) {
logger.error(INFO_MESS, e);
}
该方法很麻烦,也许有更短的选择?
真的很麻烦......试试这个: