Скажем, у нас есть такой файл:
one
two
three
(но этот файл был зашифрован)
Мой криптографический метод возвращает весь файл в памяти в виде байта [].
Я знаю, что в байтовых массивах нет понятия "линии", это может иметь, например, сканер.
Я бы хотел пройти каждую строку, преобразовать ее в строку и выполнить мойоперация на нем, но я не знаю, как:
- Найти строки в байтовом массиве
- Нарезать исходный байтовый массив на «линии» (я бы преобразовал эти кусочки в строку, чтобы отправить другим моим методам)
- Правильно пройти через байтовый массив, где каждая итерация представляет собой новую «строку»
Также: нужно ли рассматривать разные ОС файлвозможно, был составлен в? Я знаю, что есть некоторые различия между новыми строками в Windows и Linux, и я не хочу, чтобы мой метод работал только с одним форматом.
Редактировать: Следуя некоторым советам из ответов здесь, я смог написать некоторыекод, который выполняет работу. Я все еще задаюсь вопросом, достоин ли этот код сохранения или я делаю что-то, что может не сработать в будущем:
byte[] decryptedBytes = doMyCrypto(fileName, accessKey);
ByteArrayInputStream byteArrInStrm = new ByteArrayInputStream(decryptedBytes);
InputStreamReader inStrmReader = new InputStreamReader(byteArrInStrm);
BufferedReader buffReader = new BufferedReader(inStrmReader);
String delimRegex = ",";
String line;
String[] values = null;
while ((line = buffReader.readLine()) != null) {
values = line.split(delimRegex);
if (Objects.equals(values[0], tableKey)) {
return values;
}
}
System.out.println(String.format("No entry with key %s in %s", tableKey, fileName));
return values;
В частности, мне посоветовали явно установить кодировку, но я не смог точно определить, где