Точка доступа в файле.dat

Есть ли способ переместить указатель RandomAccessFile на конкретное значение? Я пытаюсь разработать программу, которая будет использовать пять студенческих идентификаторов и их соответствующий средний балл, а затем получить доступ к любым оценкам из файла.dat на основе студенческого идентификатора. Единственный способ, которым я могу думать об этом, - это иметь какой-то метод, который принимает входные данные, а затем сканирует соответствующий эквивалентный идентификатор, берет эту позицию указателя и перемещает ее на столько пробелов (скажем, 2 байта), чтобы найти позицию где это должно печатать.

Ниже мой код

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;

/*
 * 
 * Pseudocode
 * Welcome user
 * Implement the ReadWrite class
 * First Loop
 *   interactively assign the ID and GPA score
 * Second Loop
 *   When user gives an input ID, return respective GPA

 */
public class U8_Problem3 {

//Main Method
public static void main(String [] args) throws FileNotFoundException{
    Scanner input = new Scanner (System.in);
    //Creates a new instance of the file
    File newFile = new File ("Stu.dat");
    try(
        RandomAccessFile newRAFile = new RandomAccessFile(newFile, "rw");
    ){
        //Initialize variables
        int iD = 0;
        double gPA;
        //Collect IDs and GPAs
        for (int i = 0; i < 5; i++){
            System.out.println("Please enter the Student ID: ");
            iD = input.nextInt();
            System.out.println("Please enter the GPA: ");
            gPA = input.nextDouble();
            newRAFile.writeInt(iD);
            newRAFile.writeDouble(gPA);
            newRAFile.writeUTF("\n");
        }
        //read back
        while ((iD >= 0)){
            System.out.println("Enter in the ID of the student whose GPA you'd like to view.\n Type a negative number to exit the program.");
            System.out.println("ID: ");
            iD = input.nextInt();
            //This is where I'm stuck

        }
        newRAFile.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    finally{
        System.out.println("Program complete");
    }
}

}

0 ответов

Другие вопросы по тегам