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