一起使用BufferedReader和InputStream
我使用BufferedReader从InputStream中读取行。 当我直接从InputStream读取内容时,BufferedReader会忽略我的读取并继续在同一位置读取。 是否可以防止这种行为? 如果不是这样做的好习惯是什么?
PS:这是我的代码:
byte[] ba = new byte[1024*1024]; int off = 0; int len = 0; do { len = Integer.parseInt(br.readLine()); in.read(ba, off, len); br.readLine(); off += len; } while(len > 0);
in
是我的输入流和我的bufferedreader。
如果不是这样做的好习惯是什么?
对于同一文件,这不是一次读取2个流的好方法。 您只需使用一个流。
BufferedReader
用于character
流,而InputStream
用于binary
流。
二进制流没有只在
character
流中可用的readLine()
方法。
无法同时从BufferedReader和InputStream中读取数据。 如果需要二进制数据,则应使用多个readLine()调用。
这是我的新代码:
byte[] ba = new byte[1024*1024]; int off = 0; int len = 0; do { len = Integer.parseInt(br.readLine().split(";" , 2)[0],16); for (int cur = 0; cur < len;) { byte[] line0 = br.readLine().getBytes(); for (int i = 0; i < line0.length; i++) { ba[off+cur+i] = line0[i]; } cur += line0.length; if(cur < len) { ba[off+cur] = '\n'; cur++; } } off += len; } while(len > 0);
BufferedReader bufferedReader = null; try { bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line = null; while((line = bufferedReader.readLine()) != null) { //process lines here } } catch(IOException e) { e.printStackTrace(); } finally { if(bufferedReader != null) { try { bufferedReader.close(); } catch(IOException e) { } } }