一起使用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) { } } }