Я хочу открыть файл для чтения в конструкторе. Файл должен быть доступен для чтения любым методом без создания другого объекта чтения. - PullRequest
0 голосов
/ 30 мая 2020

Конструктор открывает файл для чтения. У меня есть метод getNext (), который возвращает следующую строку файла в массиве String. Однако он говорит, что объект BufferedReader, уже созданный в конструкторе, не может быть найден import java .io. ; импорт java .util. ;

public class SNIDDb
{
  private char delimiter;
  private String name;

  public SNIDDb(String name, char delimiter)
  {
    this.name=name;
    this.delimiter=delimiter;
    try
    {
      FileReader fr= new FileReader(name);
      BufferedReader br= new BufferReader(fr);
    }
    catch(Exception e)
    {
      System.out.print(e.getMessage());
    }
  }

  public Boolean hasNext() throws Exception
  {
    return !(br.readLine()==null); 
  }

  public String[] getNext() throws Exception
  {
    String c_line="";
    c_line=br.readLine();
    String[] n_line=c_line.split(delimiter);
    return n_line;
  }

  public void rewrite() throws Exception
  {
    br.close();
    BufferedWriter writer = new BufferedWriter(new FileWriter(name));
  }

1 Ответ

0 голосов
/ 30 мая 2020

br - это локальная переменная, доступная только для использования внутри конструктора. Вы должны сделать его переменной-членом экземпляра, например delimiter и name.

...