【问题标题】:how to Write / Replace Object to text file - Java如何将对象写入/替换到文本文件 - Java
【发布时间】:2020-12-16 12:21:53
【问题描述】:

如何替换文本文件中的对象并将其保存到文本文件中???

首先我要添加单独的房间。

for (int i = 0; i < lines.size() - 1; i++){

    String[] words = lines.get(i).split(" ");
    var room = new Room();
    room.roomNum = Integer.parseInt(words[0]);
    room.roomType = (words[1]);
    room.roomPrice = Double.parseDouble(words[2]);
    room.hasBalcony = Boolean.parseBoolean(words[3]);
    room.hasLounge = Boolean.parseBoolean(words[4]);
    room.eMail = (words[5]);
    rooms.add(room);                   
}

然后我在文本文件中搜索特定房间并将 selectedRoom.eMail 替换为 reserveEmail。

System.out.println("\n-- ROOM RESERVATION --");
System.out.println("Please enter the room number you wish to reserve"); 

Room selectedRoom = null;
var searchRoomNum = input.nextInt();

for(int i = 0; i < rooms.size(); i++){                 
    if(rooms.get(i).roomNum == searchRoomNum){                    
        selectedRoom = rooms.get(i);     
    }
}

if(selectedRoom.eMail.contentEquals("free")) {  
    System.out.println("Please Enter your email");
        var reserveEmail = input.next();
            selectedRoom.eMail = reserveEmail;
            System.out.println("Thanks, this room has been reserved");
            return;
}

我需要知道如何在不覆盖整个文件的情况下将此更改保存到它所来自的文本文件中。

【问题讨论】:

    标签: java arrays object filereader


    【解决方案1】:

    根据文件的大小,将其加载到内存中、将其解析为 Room 对象并覆盖更改可能会更容易。

    如果我的代码有错误,但我在移动设备上,我深表歉意。它应该为您提供让它运行的通用算法。

    导入扫描仪

    import java.util.Scanner;
    

    一般更新流程

    // Load to memory
    Scanner scn = new Scanner(new File(“C:\Users\me\Desktop\test.txt”));
    
    // Create new list of rooms
    List<Room> roomList = new ArrayList<Room>();
    
    // Begin parsing
    while (scn.HasNextLine()) {
        String currentLine = scn.nextLine();
        String[] roomAttrs = currentLine.split(“ ”);
        Room currentRoom = new Room();
        currentRoom.roomNum = Integer.parseInt(roomAttrs[0]);
        currentRoom.roomType = roomAttrs[1];
        currentRoom.roomPrice = Double.parseDouble(roomAttrs[2]);
        currentRoom.hasBalcony = Boolean.parseBoolean(roomAttrs[3]);
        currentRoom.hasLounge = Boolean.parseBoolean(roomAttrs[4]);
        currentRoom.eMail = roomAttrs[5];
    
        // make your changes to the room here
    
        roomList.add(currentRoom);
    }
    
    // reuse code for writing to text here, either delete file or clear it
    

    【讨论】:

      猜你喜欢
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      相关资源
      最近更新 更多