2013-07-26 65 views
-2

我有使用RandomAccessFile修改文件中的數據的代碼。
但它不能工作。如何使用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

這些是變量int hall_id,floorNo,area,capacity,rent,dimonssion,lenght,width; String hall_type,seat_style,facilities;並且最終的int RECORD是144 –

+0

在問題的下面應該有一個「編輯」按鈕,您可以在其中添加信息或重新格式化它。另外:你的代碼中沒有按預期工作?怎麼了?應該發生什麼?如果有錯誤,請將異常堆棧追蹤添加到您的問題中。 – zapl

+0

此代碼顯示將添加到文件中的數據,並且我想編輯這些數據,但我對此沒有想法。 –

回答

0

嘗試在讀取數據到一組變量,更新他們的要求(您可以提示用戶&每個電流值要求一個新的價值,用回車默認爲持平),然後寫更新的值再次出來。

如果你知道你想寫什麼值&該文件中的記錄索引,你也可以在那裏尋找並直接覆蓋。

但通常「改變」意味着要知道你在改變什麼。

+0

我向用戶提示當前值,但當我詢問新值時,它無法顯示該值。 –

+0

顯示您所做的工作和代碼 - 無論是在這個問題中,還是單獨的(更具體的)。我看不到你正在談論的任何可能的代碼。 –

+0

現在你可以看到我已經完成的代碼。 –