从Java中的文本文件中读取数据

我想根据部分基本项目的需要从文本文件中加载数据。例如,一个文本文件可能如下所示:


201,double,70.00,2,own bathroom

202,single,50.00,2,own bathroom

每条数据都用逗号分隔,在这种情况下按顺序排列:房间号、房间类型、费用、人数、有/没有浴室,每个房间有 5 个数据,每个房间信息都在一个新的线。


下面的代码分别读取每一行,但是我如何让它读取和存储该行中的每个数据/单词(显然没有逗号)?


try{

    BufferedReader reader = new BufferedReader(new FileReader("test.txt"));

    String line = reader.readLine();

    while (line != null){

        System.out.println(line);

        line = reader.readLine();

    }

    reader.close();

} catch(IOException ex){

    System.out.println(ex.getMessage());

}

我看到了一个使用扫描仪的示例,但我听说它速度较慢且效率较低。


我也尝试过使用 split 但我无法弄清楚如何正确地做到这一点。


鸿蒙传说
浏览 217回答 3
3回答

万千封印

您可以使用Files.readAllLines()方法并将数据映射到专用对象。假设您有这样Room的对象和适当的构造函数,您可以读取和存储数据,例如:List<String> strings = Files.readAllLines(Paths.get("test.txt"));List<Room> rooms = new ArrayList<>();for (String line : strings) {&nbsp; &nbsp; String[] split = line.split(",");&nbsp; &nbsp; Integer roomNumber = Integer.valueOf(split[0]);&nbsp; &nbsp; String roomType = split[1];&nbsp; &nbsp; Double roomCost = Double.valueOf(split[2]);&nbsp; &nbsp; Integer amount = Integer.valueOf(split[3]);&nbsp; &nbsp; String bathroom = split[4];&nbsp; &nbsp; Room r = new Room(roomNumber, roomType, roomCost, amount, bathroom);&nbsp; &nbsp; rooms.add(r);}然后您可以通过房间号获取某些房间的信息:Room room = rooms.stream()&nbsp; &nbsp; &nbsp; &nbsp; .filter(r -> r.getRoomNumber() == 102)&nbsp; &nbsp; &nbsp; &nbsp; .findFirst().orElseThrow(NoSuchElementException::new);注意:如果你使用的是java10或以上,你可以orElseThrow()不带参数使用

长风秋雁

您可以用逗号分隔行,并获取值数组:&nbsp; &nbsp;try{&nbsp; &nbsp; &nbsp; &nbsp; BufferedReader reader = new BufferedReader(new FileReader("test.txt"));&nbsp; &nbsp; &nbsp; &nbsp; String line = reader.readLine();&nbsp; &nbsp; &nbsp; &nbsp; String data[] = null;&nbsp; &nbsp; &nbsp; &nbsp; while (line != null){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(line);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line = reader.readLine();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data = line.split(","); //data will have the values as an array&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; reader.close();&nbsp; &nbsp; } catch(IOException ex){&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(ex.getMessage());&nbsp; &nbsp; }

PIPIONE

如果我没有错,那么所描述的格式是 csv 格式(https://en.wikipedia.org/wiki/Comma-separated_values)这是一个很好的概述如何读取 csv 数据:https://www.baeldung.com/java-csv-file-array
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java