0
我正在嘗試讀取輸入流的塊和寫入文件以避免內存問題,我以json格式接收數據並使用以下代碼寫入文件。從InputStream讀取BufferedReader.read時出現
BufferedReader rd =
new BufferedReader(new InputStreamReader(conn.getInputStream()));
BufferedWriter writer = null;
if(getOutputFormat().equals(Constants.URI_FORMAT_JSON)){
boolean enableAppend = true;
CharBuffer buffer = CharBuffer.allocate(1024);
writer = new BufferedWriter(new FileWriter(request.getJsonFile(isNewFile),enableAppend));
int readState = 0;
while ((readState = rd.read(buffer)) != -1) {
buffer.flip();
if(isNewFile){
writer.write(buffer.toString());
isNewFile = false;
}else {
writer.append(buffer.toString());
}
buffer.clear();
}
writer.newLine();
writer.flush();
writer.close();
}
我的問題是,大多數的JSON寫細,,而他們中的一些包含破損數據,我不知道如果我正確使用CharBuffer的使用BufferedReader中,我有看到更多的是,對於少量的數據 - 它正確地進入CharBuffer並寫入文件,當我從服務器接收更大的數據(大約2MB的輸入流 - 不是很大)時,我主要面對它。也驗證使用readLine方法,它工作正常,但我想閱讀塊中的數據,因此使用CharBuffer,任何想法?
在這種普通的循環中,你應該使用'compact()',而不是'clear()',但是在這種情況下它不會有任何區別。 – EJP