Java File Cursor - PullRequest
       37

Java File Cursor

2 голосов
/ 29 октября 2008

Есть ли какая-нибудь библиотека для использования какого-то рода курсора над файлом? Я должен читать большие файлы, но не могу позволить себе читать их все сразу в память. Мне известен java.nio, но я хочу использовать API более высокого уровня.

Небольшое задание: у меня есть инструмент, написанный на GWT, который анализирует отправленные документы XML, а затем, помимо прочего, довольно печатает XML. В настоящее время я пишу довольно распечатанный XML-файл во временный файл (моя библиотека выдаст OOMException, если я использую простые строки), но размер временного файла приближается к 18 мегабайтам, я не могу позволить ответить на GWT RPC 18 megs:)

Таким образом, у меня может быть виджет, показывающий только часть xml (проверьте этот пример ), но мне нужно прочитать соответствующую часть файла.

Ответы [ 3 ]

4 голосов
/ 29 октября 2008

Вы ознакомились с использованием FileChannels (то есть файлов с отображением в памяти)? Файлы с отображенной памятью позволяют вам манипулировать большими файлами, не помещая весь файл в память.

Вот ссылка на хорошее введение: http://www.developer.com/java/other/article.php/1548681

2 голосов
/ 29 октября 2008

Может быть, java.io.RandomAccessFile может быть вам полезен. Смотри: http://java.sun.com/j2se/1.4.2/docs/api/java/io/RandomAccessFile.html

0 голосов
/ 30 октября 2008

Я не понимаю, когда вы запрашиваете «API более высокого уровня» при позиционировании указателя файла. Это более высокие уровни, которые могут понадобиться для управления «курсором». Если хочешь контроля, иди ниже, не выше.

Я уверен, что низкоуровневые предложения Java io позволяют вам позиционировать себя в любом месте файла любого размера, не считывая что-либо в память, пока не захотите. Я знаю, что делал это раньше. Попробуйте RandomAccessFile в качестве одного из примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...