为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

鸿蒙传说 2022-07-27 21:34:41
我想根据部分基本项目的需要从文本文件中加载数据。例如,一个文本文件可能如下所示:201,double,70.00,2,own bathroom202,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 但我无法弄清楚如何正确地做到这一点。
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

您可以使用Files.readAllLines()方法并将数据映射到专用对象。假设您有这样Room的对象和适当的构造函数,您可以读取和存储数据,例如:


List<String> strings = Files.readAllLines(Paths.get("test.txt"));

List<Room> rooms = new ArrayList<>();


for (String line : strings) {

    String[] split = line.split(",");


    Integer roomNumber = Integer.valueOf(split[0]);

    String roomType = split[1];

    Double roomCost = Double.valueOf(split[2]);

    Integer amount = Integer.valueOf(split[3]);

    String bathroom = split[4];


    Room r = new Room(roomNumber, roomType, roomCost, amount, bathroom);

    rooms.add(r);

}

然后您可以通过房间号获取某些房间的信息:


Room room = rooms.stream()

        .filter(r -> r.getRoomNumber() == 102)

        .findFirst().orElseThrow(NoSuchElementException::new);

注意:如果你使用的是java10或以上,你可以orElseThrow()不带参数使用


查看完整回答
反对 回复 2022-07-27
?
长风秋雁

TA贡献1757条经验 获得超7个赞

您可以用逗号分隔行,并获取值数组:


   try{

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

        String line = reader.readLine();

        String data[] = null;

        while (line != null){

            System.out.println(line);

            line = reader.readLine();

            data = line.split(","); //data will have the values as an array

        }

        reader.close();

    } catch(IOException ex){

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

    }


查看完整回答
反对 回复 2022-07-27
?
PIPIONE

TA贡献1829条经验 获得超9个赞

如果我没有错,那么所描述的格式是 csv 格式(https://en.wikipedia.org/wiki/Comma-separated_values

这是一个很好的概述如何读取 csv 数据:

https://www.baeldung.com/java-csv-file-array


查看完整回答
反对 回复 2022-07-27
  • 3 回答
  • 0 关注
  • 173 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号