Точка доступа в файле.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");
}
}
}