Question

Disons que j'ai 10 lignes dans un fichier. J'ai 2 paramètres qui spécifient le début et la fin d'un indice.

StartIndex = 2 // spécifie les 2 premières lignes

EndIndex = 3 // spécifie les dernières lignes 3

Je dois lire les lignes entre les deux. Je sais maintenant l'index et sauter est l'une des façons ... mais sont-il d'autres moyens efficaces (même avec des bibliothèques externes)?

Merci

Était-ce utile?

La solution

En utilisant les communes IO vous pouvez le faire facilement, mais ce n'est pas efficace, car il va charger le fichier entier en mémoire.

File file = new File("myfile.txt");
List lines = FileUtils.readLines(file).subList(2,3);

http://commons.apache.org/io/

Autres conseils

Je suppose que vous vous demandez s'il y a de toute façon de sauter directement à la troisième ligne du fichier sans lire les deux premières lignes. En général (sauf si vous avez un index, comme vous l'avez mentionné) la réponse est non. Vous devez lire les deux premières lignes de savoir combien de temps ils sont, donc la solution simple de lire la ligne par ligne fichier et en ignorant les premières lignes est à peu près aussi bon que vous pouvez obtenir.

En ce qui concerne la fin, si votre index de fin est un indice depuis le début du fichier, vous pouvez arrêter tôt. Mais avez-vous dire la 3ème ligne de la fin du fichier? Dans ce cas, vous devrez aussi lire tout le chemin jusqu'à la fin du fichier à savoir quand arrêter.

Un cas particulier est si vous savez que toutes les lignes sont de la même longueur. Ensuite, vous pouvez chercher directement à l'emplacement correct dans le fichier et commencer à lire à partir de là.

Comme les autres gars ont fait remarquer, à moins que vous savez plus d'informations sur le contenu du fichier alors pas et vous avez vraiment lire de manière séquentielle pour savoir où les lignes commence. Vous pouvez utiliser LineNumberReader qui est a flux de caractères d'entrée en mémoire tampon qui conserve la trace des numéros de ligne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top