Чтение с файла и запись в массив с использованием функции
Пишу код, есть функция 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 шт):
Трудно будет использовать массив,так как изначально неизвестно размер.
Можете воспользоваться ArrayList<Character> list = new ArrayList<>();
При каждом чтении добавить символ: list.add((char)symbol)
Объект 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++;
}