Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lire un tableau d'ints d'un coup

3 réponses
Avatar
Vincent Lascaux
Bonjour,

J'ai un fichier dont les 8 premiers MB contiennent un peu plus de 2 millions
d'entiers à lire avec la méthode readInt d'un RandomAccessFile (ou d'un
DataInputStream... actuellement j'utilise un RandomAccessFile parceque j'ai
besoin par la suite d'aller chercher des informations dans la suite du
fichier).

Comme je sais que j'aurais besoin de lire tres souvent ces 8MB (c'est un
index pour la suite du fichier), je les charges en mémoire à l'execution du
programme. Est-il possible de faire celà "d'un coup" ?
En C j'aurais fais fread(buffer, sizeof(int), nbInts, file); (où buffer est
une zone mémoire de nbInts entiers).
Pour l'instant, je fais une boucle avec un readInt() à chaque pas, mais
c'est trop long.

Merci

--
Vincent

3 réponses

Avatar
no.bcausse.spam
Vincent Lascaux wrote:

Bonjour,

J'ai un fichier dont les 8 premiers MB contiennent un peu plus de 2 millions
d'entiers à lire avec la méthode readInt d'un RandomAccessFile (ou d'un
DataInputStream... actuellement j'utilise un RandomAccessFile parceque j'ai
besoin par la suite d'aller chercher des informations dans la suite du
fichier).

Comme je sais que j'aurais besoin de lire tres souvent ces 8MB (c'est un
index pour la suite du fichier), je les charges en mémoire à l'execution du
programme. Est-il possible de faire celà "d'un coup" ?
En C j'aurais fais fread(buffer, sizeof(int), nbInts, file); (où buffer est
une zone mémoire de nbInts entiers).
Pour l'instant, je fais une boucle avec un readInt() à chaque pas, mais
c'est trop long.

Merci


et BufferedInputStream c'est fait pour quoi a ton avis?
--
bruno Causse
http://perso.wanadoo.fr/othello

Avatar
Vincent Lascaux
et BufferedInputStream c'est fait pour quoi a ton avis?


C'est effectivement mieux avec un BufferedInputStream, merci pour la piste

--
Vincent

Avatar
BJB
Salut,
Si tu es à la recherche de performance optimum, regarde le java.nio
http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/FileChannel.html

Sinon, comme tu parlais d'index, cela signifie pour moi que tu auras
besoin par la suite de lire plus loint dans le fichier, et donc
http://java.sun.com/j2se/1.5.0/docs/api/java/io/RandomAccessFile.html
me semble tout adapté à ton problème.

À toi de voir ce qui te convient le mieux ;-)

A+
JB

Vincent Lascaux wrote:
Bonjour,

J'ai un fichier dont les 8 premiers MB contiennent un peu plus de 2 millions
d'entiers à lire avec la méthode readInt d'un RandomAccessFile (ou d'un
DataInputStream... actuellement j'utilise un RandomAccessFile parceque j'ai
besoin par la suite d'aller chercher des informations dans la suite du
fichier).

Comme je sais que j'aurais besoin de lire tres souvent ces 8MB (c'est un
index pour la suite du fichier), je les charges en mémoire à l'execution du
programme. Est-il possible de faire celà "d'un coup" ?
En C j'aurais fais fread(buffer, sizeof(int), nbInts, file); (où buffer est
une zone mémoire de nbInts entiers).
Pour l'instant, je fais une boucle avec un readInt() à chaque pas, mais
c'est trop long.

Merci