-2

我有这段代码用于使用 RandomAccessFile 修改文件中的数据。
但它不能工作。

      Scanner sc = new Scanner(System.in);
   System.out.println("enter search id");
    String search = sc.next().toLowerCase();

    try {
    file = new RandomAccessFile(new File("HallFile.txt"), "rw");
    long FileSize = file.length();
    file.seek(0);
    long numberOfRecords = FileSize / RECORD;
    for (int j = 0; j < numberOfRecords; j++) {


            hall_id= file.readInt();
            floorNo= file.readInt();
            area= file.readInt();
            capacity= file.readInt();
            rent= file.readInt();
            dimonssion= file.readInt();

            char temp = '\0';

            for(int i=0; i< 20; i++){
                temp = file.readChar();
                if(temp == '\0') continue;
                hall_type += temp;
            }
            for(int i=0; i< 20; i++){
                temp = file.readChar();
                if(temp == '\0') continue;
                seat_style += temp;
            }
            for(int i=0; i< 20; i++){
                temp = file.readChar();
                if(temp == '\0') continue;
                facilities += temp;

           Integer m = hall_id;
         if(search.equals(m.toString()))
         {

       file.seek(RECORD*j+144);

       System.out.println("New Floor NO: ");
       floorNo= sc.nextInt();
       file.write(floorNo);
       System.out.println("Hall area: ");
       area= sc.nextInt();
       file.write(area); 
       System.out.println("Hall capacity: ");
       capacity= sc.nextInt();
       file.write(capacity); 
       System.out.println("Hall rent per day: ");
       rent= sc.nextInt();
       file.write(rent);
       System.out.println("Hall Type: ");
       hall_type= sc.next().toLowerCase();
       file.writeUTF(hall_type); 
       System.out.println("Hall Style: ");
       seat_style= sc.next().toLowerCase();
       file.writeUTF(seat_style); 
       System.out.println("Hall Facilities: ");
       facilities= sc.next().toLowerCase();
       file.writeUTF(facilities); 
       System.out.println("Hall Dimonssion: ");
       dimonssion= sc.nextInt();
       file.write(dimonssion); 
       System.out.println("Saved successfully.");

                }
            }
            file.close();

        }} catch (IOException e) {
            e.getStackTrace();
                        System.out.println("error");
 }
4

1 回答 1

0

尝试将数据读入一组变量,根据需要更新它们(您可以向用户提示每个变量的当前值并要求一个新值,Enter 默认为不变),然后再次写出更新的值。

如果您知道要写入的值和文件中的记录索引,您也可以在那里查找并直接覆盖。

但通常“改变”意味着知道你在改变什么。

于 2013-07-26T02:30:03.483 回答