Java имеет LineNumberReader
, который позволяет мне отслеживать строку, в которой я состою, но как мне отслеживать положение байта (или символа) в потоке?Как узнать, сколько символов или байтов было прочитано из потока?
Я хочу что-то похожее на lseek(<fd>,0,SEEK_CUR)
для файлов в С.
EDIT: Я читаю файл с помощью LineNumberReader in = new LineNumberReader(new FileReader(file))
, и я хочу, чтобы иметь возможность напечатать что-то вроде «обработанного XX% файла» каждый сейчас и тогда. Самый простой способ, который я знаю, - сначала посмотреть на file.length()
и разделить его текущую позицию.
Какой тип потока вы пытаетесь использовать? Файловый поток живой комм. поток и т. д. ... ??? – trumpetlicks
Я не могу себе представить, почему вы хотели бы знать это и как вы могли бы это понять. Тот факт, что это поток, делает невозможным положение, так как вы постоянно получаете больше. Самое большее, что вы можете сделать, это следить за тем, сколько байтов вы прочитали с момента создания потока через простое целое число и увеличиваете его. Возможно, если вы дадите нам более подробную информацию о том, каковы ваши намерения ... –
Вы можете посмотреть [RandomAccessFile] (http://docs.oracle.com/javase/1.4.2/docs/api/java/io/RandomAccessFile. html), но я не знаю, соответствует ли он потоку, на который вы смотрите. – Thomas