我应该如何着手实施以下内容?我将不得不处理一个包含几行文本的字节数组。数据的平均大小可能大约为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 2010-07-07 17:43:11
我正在考虑重写第三方Web应用程序数据的可重用组件,如果有需要的话。这是一个宠物项目。问题主要是关于处理这样的数据是否有效,而且我的方法是合理的......有人与这类真实的东西一起工作应该能够给我一些提示,我可以在其他方面工作:) 我不知道我是否会遇到一些奇怪的编码问题,或者如果这将是愚蠢缓慢等... – user385797 2010-07-07 17:47:50