парсинг данных bufferedReader, остановка на определенных символах - PullRequest
0 голосов
/ 01 мая 2018

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

Мой формат таков: text.txt file = имя, возраст, зарплата. В этом случае подойдет любое число, но в файле это строка, разделенная запятыми, например: «Джеймс, 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();
  }
   }
}

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

1 Ответ

0 голосов
/ 01 мая 2018
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. Может быть, опишите процесс, чтобы помочь нам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...