【发布时间】:2010-07-07 17:39:30
【问题描述】:
我应该如何真正实施以下内容?我将不得不处理一个包含多行文本的字节数组。数据的平均大小可能约为 10 KB。
在未指定数量的行之后,会有一行以特殊标记(“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();
}
【问题讨论】:
-
您的问题是什么?这是否按照您想要的方式运行?您是在问应该重构什么?这是在生产系统中进行的吗?这段代码的目的是什么,作业?
-
我正在考虑一个可重用的组件来重写第 3 方 Web 应用程序数据,如果需要的话。这是一个宠物项目。问题主要是关于处理这样的数据是否有效并且我的方法是否合理......真正使用过这类东西的人应该能够给我一些提示,我可以处理其余的:) 我不知道我是否会遇到一些奇怪的编码问题,或者这是否会非常慢等等......