Lire une partie d'un fichier texte [résolu] - Java - Programmation
Marsh Posté le 30-10-2002 à 17:55:16
benou a écrit a écrit : new String(tonTableauDeByte); |
et les caractères seront encodés correctement en faisant ça ?
Marsh Posté le 30-10-2002 à 17:56:52
bha oui ... ca utilisera l'encodage par défaut de ton OS.
sinon, tu peut utiliser un autre encodage : regarde les constructeurs de la classe String
Marsh Posté le 30-10-2002 à 17:57:05
en faisant ça :
Code :
|
Je m'embête pour pas grand chose ?
Et puis je comprend pas, j'ai toujours une IndexOutOfBoundException au moment de la lecture de la partie qui m'interresse depuis le fichier (fileInputStream.read (byData, _iOrigin, byData.length)
Marsh Posté le 30-10-2002 à 18:04:34
Si tu utilisais des Reader au lieu d'utiliser des InputStream, ça irait sans doute mieux !
Un Reader lit un flux de caractères (du texte, donc), alors qu'InputStream lit un flux d'octets (du binaire, donc).
Code :
|
C'est pas plus simple, comme ça ?
Et puis, au cas où cela t'intéresserait, BufferedReader sait aussi lire des lignes entières (BufferedReader.readLine()).
Marsh Posté le 30-10-2002 à 18:06:39
oui !
Code :
|
ca devrait t'aller ca non ?
(j'ai pas vérifier mon caode mais ca doit être ca en gros)
Marsh Posté le 30-10-2002 à 19:22:52
BifaceMcLeOD a écrit a écrit : Si tu utilisais des Reader au lieu d'utiliser des InputStream, ça irait sans doute mieux ! Un Reader lit un flux de caractères (du texte, donc), alors qu'InputStream lit un flux d'octets (du binaire, donc).
|
Non, ça ça me va pas justement (ms apparement, ce que j'ai fait c'est pas mieux !).
Moi je voudrais lire les 30 premiers octets de mon fichier, pas tout le fichier (il est énorme !).
La ligne suivante :
Code :
|
Que me propose Biface, c'est pas du tout ça (g essayé avant !). Cette méthode écrit dans le tableau charBuffer[] les caractères lus depuis le fichier, jusqu'a à la fin de ce fichier ou jusqu'a ce que le nombre de bytes à lire à été lu (ici charBuffer.length). Dans ce fonction, l'offset concerne le tableau de bytes, pas le fichier.
C à dire qu'avec la méthode que Biface me donne, ça va faire ça :
lire les 30 premiers octets du fichier _fArcDir
les stocker dans charBuffer à partir de l'index _iOrigin
Moi j'ai besoin de :
lire 30 octets à partir du _iOrigin ième octet du fichier
les stocker dans charBuffer (à partir de l'index 0 bien sûr !)
Marsh Posté le 31-10-2002 à 09:48:01
Un petit bout de code comme ca ?
try{
FileInputStream inFile = new FileInputStream(new File(nomFichier));
while ((octet = inFile.read()) != -1 && (!trouve)) {
.....
Marsh Posté le 31-10-2002 à 09:51:40
persepolis a écrit a écrit : Un petit bout de code comme ca ? try{ FileInputStream inFile = new FileInputStream(new File(nomFichier)); while ((octet = inFile.read()) != -1 && (!trouve)) { ..... |
...oula, ça veut dire parcourir tout le fichier avant de m'arrêter à l'octet qui m'interresse !? ça risque de prendre pas mal de temps vu la taille de mes fichiers.
J'aurais préféré autre chose qu'une lecture séquentielle !
Marsh Posté le 31-10-2002 à 11:13:02
Bon, finalement j'ai trouvé, avec RandomAccessFile.
Desfois que ça interresserai qqn :
Code :
|
Marsh Posté le 30-10-2002 à 17:36:41
ça m'énerve, j'arrive pas à trouver. Je m'y perd avec tous ces flux ds tous les sens !
Voila ce que j'ai besoin de faire :
Lire un fichier à partir d'un offset, sur une longueur donnée, comme fait ici :
Sauf que là je me retrouve avec un tableau de bytes. Comment faire pour obtenir une String ou un tableau de char à partir de ça ? (ou autrement).
Message édité par El_gringo le 31-10-2002 à 18:03:46