2015-02-28 5 views
1

Как использовать FileReader.read() для чтения байта на конкретном смещении?java filereader читать со смещением

FileReader fr = new FileReader(path); 
char[] tmp = null; 
fr.read(tmp, 11, 1); 
n = tmp.toString(); 
n = Integer.parseInt(n,16); 

Этот код возвращает nullpointerexception, хотя файл в 'path' действителен и не пуст. Здесь я хочу прочитать одиннадцатый байт в этом файле.

чтение строк из файла с BufferedReader.readLine() хорошо работает в одном файле, но я не могу понять, как получить определенное количество байт, начиная с определенного смещения.

+4

1. не используйте «Reader», если он предназначен для чтения байтов; 2. 'tmp' равно null, поэтому, конечно, вы получите NPE. – fge

+0

И InputStream, и Reader имеют метод пропуска (длинный) ... –

+0

Вы хотите прочитать 11-й ** байт ** или 11-й символ **? Байты и символы не совпадают. – Jesper

ответ

1

В read(char[] buf, int offset, int length)смещение смещено в массиве buf. Вам нужно пропустить смещение символов.

FileReader fr = new FileReader(path); 
int offset = 11; 
fr.skip(11); 
int c = fr.read(); 
+0

спасибо, что heklped (другие комментарии также кстати)! – user1837293

Смежные вопросы