我想获取文件的字符,并且我知道前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 :