亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從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 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號