Разбор данных bufferedReader, остановка на определенных символах

Я новичок в java, но все еще работаю над множеством вещей. У меня проблема с создаваемым мной пакетом для чтения / записи. У меня есть запись (как текстовые, так и файлы произвольного доступа), но моя проблема возникает из-за использования bufferedReader для сбора ввода моего текстового файла, останавливаясь на ",", а затем взяв эту информацию и проанализировав ее до соответствующих форматов данных перед ее отправкой. прочь на метод записи, который у меня есть.

У меня такой формат: файл text.txt = имя, возраст, зарплата. В этом случае подойдет любое число, но в файле это строка, разделенная запятыми, например: «Джеймс, 22, 1500.20»

Мой метод - беспорядок, вот где я действительно застрял

package l2Reader;

import java.io.*;

import l2Record.Record;

public class Text extends Reader {

private BufferedReader in;

/**
 * Opens a file of employee records for reading
 * @param fileName -- name of file to open
 * @throws IOException -- if fileName is null or 
 * unable to open the file for any reason.
 */
public void open(String fileName) throws IOException{
in = new BufferedReader(new FileReader(fileName));
}

/**
 * Reads the next employee data Record.
 * @return the Record read.
 * @throws IOException if an underlying read command throws an exception or
 * the data in the file is not able to be interpreted as a valid employee record.
 */ 
public Record read() throws IOException {
try {
  String temp = "";
     while((temp = in.readLine()) != null)
     if (temp.trim().length() > 0){
        temp =temp + in.readLine();
     }
     System.out.println(temp);
        String name = "nub";
     byte age = 0;
     float salary = 10;
     if (name == null){
     throw new IOException();
      }
       //return a record
     return new Record(name, age, salary);

    } catch (IOException e) {
        throw e;
    } catch (Exception e) {
        //throw new IOException();
    e.printStackTrace();
    throw new IOException();
    }
}

/**
 * @return true if there is no more data to be read, false otherwise.
 */
public boolean eof(){
boolean eof = true;
 try{ 
  return ! (in.read() != -1);
  }
 catch (Exception e) { 
 return true;
  }   
 }
          /**
 * Closes the file
 * @throws IOException -- if unable to close the file
 */
public void close() throws IOException{
  try{
  in.close();
  }catch (Exception e) {
  throw new IOException();
  }
   }
}

** отредактировано, чтобы показать весь класс

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
70
1

Ответы 1

public Record read() throws IOException {
  String line = in.readLine();
  if (line == null) {
    throw new IOException(); //maybe return null?
  }

  String[] values = line.split(",");
  String name = values[0];
  int age = Integer.parseInt(values[1]);
  float salary = Float.parseFloat(values[2]);

  return new Record(name, age, salary);
}

но, возможно, проблема не в этом. Я не вижу, где вы инициализировали свой bufferedReader. Может быть, опишите процесс, чтобы помочь нам.

Я могу заполнить это подробнее.

user8027140 01.05.2018 23:05

Я создал текстовый файл, используя метод записи (создал файл printWriter .txt, который работает), который мне нужно открыть и вернуть как запись в методе чтения. В настоящее время я предоставил переменные по умолчанию в качестве заполнителей для фактической работы. Прямо сейчас мое чтение не дает мне ничего, кроме нулевых значений, и я не могу с ними работать. Я применил раздел «temp», чтобы попытаться выяснить, что возвращает мой файл, но пока это все равно нулю.

user8027140 01.05.2018 23:10

«while» не используется в квадратных скобках, поэтому он касается только условия if. Итак, сейчас вы читаете весь файл и проверяете «если», прежде чем делать что-либо еще. На последней итерации in.readline () больше нет строки для чтения, поэтому она возвращает «null». Вот почему вы всегда получаете null. Наденьте эти скобки, и все. Если вы хотите получить только одну запись из чтения, используйте if вместо while (возможно, вы использовали while для отладки).

GabLeg 02.05.2018 16:22

Просто такой совет, вам не нужно пытаться поймать, если вы собираетесь снова генерировать исключение. Просто добавьте его в подпись функции, как вы это сделали, и все. Это просто более чисто;)

GabLeg 02.05.2018 16:30

Спасибо, GabLeg, хотя я не видел этого до тех пор, пока не использовал что-то очень похожее на это, и это сработало.

user8027140 03.05.2018 17:00

Удовольствие все мое :)

GabLeg 03.05.2018 17:14

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