BufferedReader readline читает ноль, хотя в файле есть текст - PullRequest
0 голосов
/ 18 октября 2019

По сути, я пытаюсь создать простое приложение базы данных с автоматически сгенерированными идентификаторами в каждой записи студента. Программа считывает предыдущий самый высокий идентификатор и добавляет к нему 1, чтобы создать следующий. Тем не менее, даже несмотря на то, что в текстовом документе есть числа, BufferedReader продолжает возвращать ноль при использовании readLine

. Я проверил, был ли мой синтаксический анализ int, но я понял, что это был буферный ридер, сохранив readline в переменной затем. распечатав его, где я получил нулевой результат. Я также попытался использовать чтение файла сканера, которое не работало, и я проверил все связанные классы и методы, чтобы попытаться выяснить это.

Этот код создает файл topsid и записывает 0, чтобы инициализировать его, что происходитчитать как ноль

if(MiscProcesses.firstStartup() == false) //method that checks if these files exist
{
                File topsid = new File("topsid.txt");
                FileWriter fw = new FileWriter(topsid);
                fw.write("0");
                fw.close();
}

Этот код отвечает за чтение файла и, следовательно, нахождение более высокого значения идентификатора

Student (String[] studata) 
{
            //checking highest SID
            File topsid = new File("topsid.txt");
            FileWriter fw = new FileWriter(topsid);
            FileReader fr = new FileReader(topsid);
            BufferedReader br = new BufferedReader(fr);


            //checking high sid file and getting new sid
            String test = br.readLine();
            System.out.println(test+" <test");   <this ends up printing null

            int sid;

            sid = Integer.parseInt(test)+1;
            System.out.println(sid);

            fw.write(Integer.toString(sid));
            this.id = sid;

            ...

            br.close();
            fr.close();
            fw.close();       
 }

Когда я открываю файл topsid до запуска второго кода, это всехорошо и файл содержит ноль. Я ожидал бы, что bufferedreader будет читать «0», но он просто читает ноль, и когда я открываю файл после выполнения кода, данные внутри удаляются.

1 Ответ

3 голосов
/ 18 октября 2019
        FileWriter fw = new FileWriter(topsid);
        FileReader fr = new FileReader(topsid);
        BufferedReader br = new BufferedReader(fr);

Создание FileWriter таким образом приведет к растопке существующего файла, прежде чем вы прочитаете его содержимое.

Если вы хотите прочитать что-то из файла, а затем записать что-нибудь обратно, создайте FileWriter после вы прочитали с него.

...