Pouvez-vous m'aider à comprendre un code svp ? Actuellement je suis le cours sur java, et je coince avec le chapitre flux entrée et sortie.
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class sdz1 {
public static void main(String[] args) {
File file = new File("test.txt");
FileInputStream fis;
BufferedInputStream bis;
FileChannel fc;
try {
if(!file.exists()) {
file.createNewFile();
}
fis = new FileInputStream(new File("test.txt"));
//On récupère le canal
fc = fis.getChannel();
//On en déduit la taille
int size = (int)fc.size();
//On crée un buffer correspondant à la taille du fichier
ByteBuffer bBuff = ByteBuffer.allocate(size);
fc.read(bBuff);
//On prépare à la lecture avec l'appel à flip
bBuff.flip();
//Puisque nous avons utilisé un buffer de byte afin de récupérer les données
//Nous pouvons utiliser un tableau de byte
//La méthode array retourne un tableau de byte
byte[] tabByte = bBuff.array();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }
Ce que je comprend pas c'est l'objet "FileChannel".
À la ligne 26 je comprend pas quand on dit qu'on récupère le canal.
Puis à la ligne 29 , on fournit à la variable "size" la taille du canal.
À la ligne 31 , on crée un buffer, c'est quoi un buffer exactement?
Et puis à la ligne 39 , on utilise la méthode ".flip()", à quoi ça sert?
Merci d'avance de prendre de votre temps pour me répondre
Je pense avoir compris le code après quelques recherches.
Donc là ce qu'on doit faire c'est créer un tampon (buffer), un espace de mémoire pour stocker temporairement des données, j'ai bien compris gràce à ce site. Mais avant de créer un buffer, on doit connaître la taille que doit avoir ce buffer, et pour cela on doit d'abord créer un cannal (chemin) vers le fichier gràce à la méthode getChannel() de l'objet "FileChannel".
Puis toujours grâce à l'objet "FileChannel", on peut connaître la taille du fichier, notamment avec la méthode "size()".
Puis on défini la taille du buffer avec la méthode "allocate()" de l'objet "ByteBuffer".
Et la méthode "flip()" fonctionne un peu comme les itérateur, cela nous permet de mettre le curseur au début une fois qu'on a lu un fichier.
Dsl du retard de ma réponse, vu que je travail, je n'ai pas le loisir de toujours prendre un peu de mon temps pour coder.
Merci,
flux entrée sortie java
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl