Я никогда раньше не сталкивался с Java IO API, и сейчас я очень расстроен. Мне трудно поверить, насколько это странно и сложно, и как сложно выполнить простую задачу.
Моя задача: у меня 2 позиции (начальный байт, конечный байт), pos1
и pos2
. Мне нужно прочитать строки между этими двумя байтами (включая начальный, не включая конечный) и использовать их как объекты String UTF8.
Например, на большинстве языков сценариев это было бы очень просто 1-2-3 -liner вроде этого (в Ruby, но по сути он будет таким же для Python, Perl и т. д.):
f = File.open("file.txt").seek(pos1)
while f.pos < pos2 {
s = f.readline
# do something with "s" here
}
Он быстро превращается в ад с API ввода-вывода Java;) На самом деле, я вижу два способа чтения строк (заканчивающиеся на \ n
) из обычных локальных файлов:
getFilePointer ()
и seek (long pos)
, но это readLine ( ) читает строки не в формате UTF8 (и даже не байтовые массивы), а очень странные строки с нарушенной кодировкой, или что-то в этом роде - эти счетчики, кажется, округляются с шагом в 16К.
Действительно ли мне нужно реализовать все это самостоятельно, то есть интерфейс чтения файлов, который:
\ n
») Есть ли способ быстрее, чем реализовать все это? себя? Наблюдаю ли я за чем-то?