2008-10-29 9 views
2

Existe-t-il une bibliothèque permettant d'utiliser une sorte de curseur sur un fichier? Je dois lire de gros fichiers, mais je n'ai pas les moyens de les lire tous en même temps en mémoire. Je suis conscient de java.nio, mais je veux utiliser une API de plus haut niveau.Curseur de fichier Java

Un petit backgrond: J'ai un outil écrit en GWT qui analyse les documents XML soumis, puis joliment imprime le xml, entre autres choses. Actuellement, j'écris le joli fichier XML imprimé dans un fichier temporaire (ma bibliothèque me renvoie une OOMException si j'utilise des chaînes simples), mais la taille du fichier temporaire approche 18 Mo. Je ne peux pas me permettre de répondre à un RPC GWT avec 18 megs :)

Donc je peux avoir un widget pour montrer seulement une partie du xml (cochez cette example), mais j'ai besoin de lire la partie correspondante du fichier.

Répondre

4

Avez-vous regardé l'utilisation de FileChannels (fichiers mappés en mémoire)? Les fichiers mappés en mémoire vous permettent de manipuler des fichiers volumineux sans mettre le fichier entier en mémoire.

Voici un lien vers une bonne introduction: http://www.developer.com/java/other/article.php/1548681

+0

Tu m'as battu au coup de poing! Oui, c'est le chemin à parcourir ... –

0

Je ne comprends pas quand vous demandez une « API de niveau supérieur » lors du positionnement du pointeur de fichier. Ce sont les niveaux supérieurs qui peuvent avoir besoin de contrôler le "curseur". Si vous voulez le contrôle, allez plus bas, pas plus haut.

Je suis certain que les classes Java io de niveau inférieur vous permettent de vous positionner n'importe où dans n'importe quel fichier de taille sans rien lire en mémoire jusqu'à ce que vous le vouliez. Je sais que je l'ai déjà fait. Essayez RandomAccessFile comme exemple.