Отображение строки поиска RandomAccessFile

Я Работаю над проектом.

Мне нужно прочитать и отобразить запись, содержащую идентификатор учащегося и его имя. который ввел пользователь (читается по ID)

Записал в файл с помощью writeUTF и ArrayList..

public void readFile (String sID) выдает исключение {

    studentID = sID;  // take passed variable


    try {
        //open read file 
        RandomAccessFile sFile = new RandomAccessFile("newStudent.dat", "r");

//** Я не понимаю этот длинный раздел.

        long pos = sFile.length();  // Get length of File 

        sFile.seek(pos); //moves pointer , I get this, but Why?

        for (int i = 0; i < sFile.length(); i++) {

            //read the file 

            String result = sFile.readUTF();

            if (result.equals(studentID)) 

//** здесь я хочу напечатать всю запись с именем

            System.out.print(result); // testing print
        }
         sFile.close();


    } catch (IOException e) {
        System.out.print("test File caught ");

Как только это будет завершено, мне нужно будет прочитать и заменить запись.

Я потерялся в этот момент, любые возможные предложения. У меня есть несколько подобных сообщений, и я не понимаю, что мне нужно исправить. Мне просто нужно протестировать это, прежде чем я создам простоту JDesktopPane и JInternalFrame — моя цель на этом этапе.

Спасибо за любой отзыв или направление


person user2920627    schedule 20.12.2015    source источник
comment
Можете ли вы объяснить, что работает или не работает?   -  person Lucien Stals    schedule 21.12.2015
comment
Ну, я хочу получить конкретные данные из файла, и я не мог сравнить свою переданную строку непосредственно с двоичными данными в файле, из которого я читаю... Я собираюсь сделать еще один файл Java, который изменяет запись   -  person user2920627    schedule 21.12.2015


Ответы (1)


Я предлагаю вам установить указатель файла на начало файла, затем начать цикл и продолжать проверять, что вы не достигли конца файла. Вот пример того, как можно изменить ваш код:

import java.io.IOException;
import java.io.RandomAccessFile;

public class ReadUTF {

   public static void main(String[] args) {
       String studentID = "sID"; // take passed variable

       try {
           // open read file
           RandomAccessFile sFile = new RandomAccessFile("c:\\temp\\newStudent.dat", "r");

        sFile.seek(0); // moves pointer to the first location to read

        long current = 0; 
        while (current < sFile.length()) {

            // read the file
            String result = sFile.readUTF();

            if (result.equals(studentID))
                // **here I want to print whole record with the name
                System.out.print(result); // testing print

            current = sFile.getFilePointer(); // update to the next location to be read

        }
        sFile.close();

    } catch (IOException e) {
        System.out.print("test File caught ");
    }
  }
}
person Hamzeh Zawawy    schedule 20.12.2015
comment
Отлично, спасибо! Я не осознавал, что был близок - Фу! я умирал - person user2920627; 21.12.2015