Как я должен действительно реализовать следующее? Мне придется обрабатывать массив байтов, который будет содержать текст на нескольких строках. Средний размер данных, вероятно, составит около 10 килобайт данных.Разделение массива байтов и его правильное соединение
После неуказанного количества линий будет линия, начинающаяся со специального токена («FIRSTSTRING»). Позже где-то в том же файле будет другая строка, также начинающаяся со специального токена («SECONDSTRING»). Если и первая и вторая строки определены в массиве байтов, вторая строка должна быть скопирована вместо первой строки. После этого возвращаемый массив байтов должен быть возвращен.
Ниже представлена моя первая попытка. Я еще не реорганизовал его, чтобы уменьшить сложность. Меня беспокоит надежность, а также очень большая производительность. Кажется, слишком много способов обойти это, и мне не хватает опыта, необходимого для суждения. Я бы очень признателен за хороший вклад в это.
private byte[] handleHeader(final byte[] input) throws IOException {
// input
ByteArrayInputStream bais = new ByteArrayInputStream(input);
InputStreamReader isr = new InputStreamReader(bais);
BufferedReader brs = new BufferedReader (isr);
// output
ByteArrayOutputStream data = new ByteArrayOutputStream();
ByteArrayOutputStream after = new ByteArrayOutputStream();
String line=null;
String original=null;
String changeWith=null;
while ((line = brs.readLine())!=null) {
line+="\n";
if (line.startsWith("FIRSTSTRING")) {
original = line;
continue;
}
if (line.startsWith("SECONDSTRING")) {
changeWith = line;
continue;
}
if ("".equals(original)) {
data.write(line.getBytes());
} else {
after.write(line.getBytes());
}
}
if (changeWith!=null && original != null) {
changeWith+="\n";
data.write(changeWith.getBytes());
} else if (original != null){
data.write(original.getBytes());
}
after.writeTo(data);
return data.toByteArray();
}
Что вы хотите сказать? Это работает так, как вы хотите или нет? Вы спрашиваете, что нужно реорганизовать? Это происходит в производственной системе? Какова цель этого кода, домашнее задание? – Zak
Я думаю о многократном компоненте для перезаписи данных сторонних веб-приложений, если это когда-либо понадобилось. Это проект для домашних животных. Вопрос в основном заключается в том, насколько эффективна обработка данных, и мой подход звучит ... Кто-то, кто работал с подобными вещами на самом деле, должен уметь давать мне подсказки, и я могу работать на остальном :) Я не знаю, буду ли я сталкиваться с некоторыми странными проблемами с кодировкой, или если это будет глупо медленным и т. Д. ... – user385797