Bonjour ,
je voudrais écrire des blocs d'octets de 18M dans un fichier, pour cela j'utilise les instructions suivantes :
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();
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
 
java.lang.IndexOutOfBoundsException
	at java.io.FileOutputStream.writeBytes(Native Method)
	at java.io.FileOutputStream.write(FileOutputStream.java:260)
Est ce que vous avez idée ?
Merci