我應該如何着手實施以下內容?我將不得不處理一個包含幾行文本的字節數組。數據的平均大小可能大約爲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