如果我使用java RandomAccessFile,如何更新数据

时间:2013-07-26 00:41:07

标签: java

我有这个代码用于使用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");
 }

1 个答案:

答案 0 :(得分:0)

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

如果你知道你想要写什么值&amp;在文件中有什么记录索引,你也可以在那里寻找并直接覆盖。

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