Bonjour,
je voudrais écrire des blocs d'octets de 18M dans un fichier, pour cela j'utilise les instructions suivantes :
Mais j'ai un problème juste au commencement de l'écriture du deuxième bloc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 FileInputStream in = new FileInputStream(entree); FileOutputStream out = new FileOutputStream(sortie); byte [] Block = new byte[18874368]; long TailleFichier = (new File(entree)).length(); //Nombre de bolcks d'une taille de 18M long NbBlocks = ((new File(entree)).length())/18874368; //Compteur de blocks enregistrés long Compteur = 1; //L'offset d'enregistrement long CompteurBlocks = 0; //La taille d'écriture long avancement = 0; while(in.read(Block) != -1){ //calcul de l'Offest CompteurBlocks = (Compteur-1)*18874368; //écriture à partir de l'offest avec un enregistrement "avancement" out.write(Block, (int)CompteurBlocks, (int)avancement); //un bloc de plus écris Compteur++; //vers la fin du fichier if(Compteur == NbBlocks){ avancement = TailleFichier - (Compteur*18874368); Block = new byte[(int)avancement]; }else{ avancement = Block.length; } } in.close(); out.close();
Est ce que vous avez idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 java.lang.IndexOutOfBoundsException at java.io.FileOutputStream.writeBytes(Native Method) at java.io.FileOutputStream.write(FileOutputStream.java:260)
Merci
Partager