120 lines
4.8 KiB
Java
120 lines
4.8 KiB
Java
import java.io.InputStream;
|
|
import java.io.*;
|
|
import java.io.IOException;
|
|
|
|
public class Lecture {
|
|
private String ce_chemin;
|
|
private int data;
|
|
|
|
/* ===========================================================================================================================================================================
|
|
*
|
|
* CONSTRUCTEUR
|
|
*
|
|
* ===========================================================================================================================================================================
|
|
*/
|
|
|
|
public Lecture(String un_chemin)
|
|
{
|
|
this.ce_chemin = un_chemin;
|
|
}
|
|
|
|
/* ===========================================================================================================================================================================
|
|
*
|
|
* GET_HEADER
|
|
*
|
|
* ===========================================================================================================================================================================
|
|
*/
|
|
|
|
protected int GetHeader(int n){
|
|
try {
|
|
/* Ouverture du flux */
|
|
InputStream fis = new FileInputStream(this.ce_chemin);
|
|
|
|
for(int i=-1; i<n; i++){
|
|
this.data = fis.read();
|
|
}
|
|
try{
|
|
fis.close();
|
|
}
|
|
catch(IOException e){
|
|
System.out.println("Erreur de fermeture");
|
|
return 0;
|
|
}
|
|
|
|
return this.data;
|
|
|
|
} catch (IOException e) {
|
|
System.err.println("Erreur relevé");
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/* ===========================================================================================================================================================================
|
|
*
|
|
* GET_OFFSET
|
|
*
|
|
* ===========================================================================================================================================================================
|
|
*/
|
|
|
|
protected int[] GetOffset(){
|
|
//Renvoie le paylodad. Dans notre cas tous les états de nos cases.
|
|
// Renvoie le payload dans un tableau ou chaque elt du tableau en est un du payload.
|
|
|
|
try{
|
|
/* Ouverture d'un flux */
|
|
InputStream fis = new FileInputStream(this.ce_chemin);
|
|
|
|
int cette_taille=fis.available();/*cette_taille prend une aproximation de la taille du flux */
|
|
|
|
int ce_compteur = 0, temp;
|
|
int [] ce_tableau = new int[cette_taille]; /*-5 pour le header mais +1 pour le -1 de fin de fichier. */
|
|
int [] ce_tableau_temp = new int[8]; /*C'est le tab qui va stocker les différents octets */
|
|
int[] ce_tab_to_return = new int[0];; /*Tableau qui va être renvoyé et qui va contenir tous les bits dans le non ordre */
|
|
|
|
/*On skip les 5 premiers octets */
|
|
for(int i=0;i<5;i++){
|
|
this.data = fis.read();
|
|
}
|
|
|
|
/* ============================= Création tu tableau avec les différents octets en int ========================================== */
|
|
|
|
while(data != -1){
|
|
this.data = fis.read();
|
|
ce_tableau[ce_compteur]=this.data;
|
|
ce_compteur=ce_compteur+1;
|
|
}
|
|
|
|
/* =============================================================================================================================== */
|
|
|
|
//Utilisation du tableau différent pour créer un tableau avec tout les octets mais dans le bon sens grace a ma superbe classe Outils ;)
|
|
|
|
outils ToolBox = new outils();
|
|
|
|
for(int m=0; m<ce_tableau.length-1; m++){ //length -1 car on ne veux pas traiter le -1;
|
|
temp = ce_tableau[m];
|
|
|
|
for(int n=0; n<8; n++){ //repetition 8 fois pour traiter les 8 bits
|
|
ce_tableau_temp[n] = temp&1;
|
|
temp = temp >> 1;
|
|
}
|
|
|
|
ce_tab_to_return = ToolBox.concatenate(ce_tab_to_return, ToolBox.reverse(ce_tableau_temp));
|
|
}
|
|
|
|
/* =================================================================================================================================== */
|
|
|
|
try{
|
|
fis.close();
|
|
} catch(IOException e){
|
|
System.out.println("erreur lors de la fermeture");
|
|
return null;
|
|
}
|
|
return ce_tab_to_return;
|
|
}
|
|
catch(IOException e){
|
|
System.out.println("erreur d'ouverture");
|
|
return null;
|
|
}
|
|
}
|
|
}
|