我想获取文件的字符,并且我知道前128个字节是垃圾,接下来的4个字节为我提供了重要的详细信息。

目前,我正在这样做:

    br = new BufferedReader(new FileReader(path));
    char[] cbuf = new char[133];
    br.read(cbuf, 0, 132);
    String importantDetails = "";
    for(int i=128;i<132;i++) importantDetails += cbuf[i];


但是我觉得这是一种非常丑陋的方式,首先我尝试过:

    String importantDetails = cbuf.toString().substring(128);


这会导致错误(字符串索引超出范围:-118)。
而仅cbuf.toString()打印[C@d70c109

有没有更好的方法来用Java完成此操作?

我觉得文件中应该有一个偏移量(因为read(cbuf [],offset,length)的偏移量是cbuf []中的偏移量,而不是要读取的文件中的偏移量。

最佳答案

您可以使用RandomAccessFile做到这一点。编码 :

  RandomAccessFile file = new RandomAccessFile(path, "r");
  file.seek(128); // Sets the file-pointer offset
  byte[] b = new byte[4];
  file.readFully(b);


应该做您想要的(减去所有错误检查)。

See the javadoc for more details :

07-27 18:10