Чтение с файла и запись в массив с использованием функции

Пишу код, есть функция reading() которая принимает String filename и возвращает новое значение через глобальную переменную getCipher (char). Сама функция выглядит следующим образом:

      System.out.print("Text from file is:");
  BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\\\Users\\\\user\\\\Desktop\\\\" + filename));

  int symbol = bufferedReader.read();
  while (symbol != -1) {  

  getCipher = (char) symbol;
  symbol = bufferedReader.read(); 

  System.out.print(getCipher);
}
  bufferedReader.close();

  return getCipher;

Теперь вопрос, получается данным способом с вывожу только последний элемент при чтении с файла, я также знаю что я могу использовать массив из char-элементов. Но проблема в нём что я не могу написать

getCipher[] = (char)symbol //невозможно , так как запись в массив происходит через циклы 

Как я могу получить все символы и сразу записать их в массив? Могу чего-то упускать и не знать.


Ответы (2 шт):

Автор решения: Tix

Трудно будет использовать массив,так как изначально неизвестно размер. Можете воспользоваться ArrayList<Character> list = new ArrayList<>(); При каждом чтении добавить символ: list.add((char)symbol)

→ Ссылка
Автор решения: dmtr

Объект BufferedInputStream имеет метод readAllBytes() через который можно получить длину байтов передаваемого потока. Этой длиной инициализируете массив и затем пробегаетесь по-байтово и заполняете массив значениями.

Пример:

BufferedInputStream bis = new BufferedInputStream(new FileReader(new File("")));

char[] getCipher = new char[bis.readAllBytes().length];

int i = 0;
while (bis.available() > 0) {
    getCipher[i] = (char) bis.read();
    i++;
}
→ Ссылка