Datenreader der Dateiinhalt nicht interpretieren soll


#1
Guten Morgen zusammen,

ich habe folgende Aufgabe: Eine Datei einlesen, die aus mehreren Records besteht und die folgende Daten Formate beinhaltet: HEX, ASCII, Binär!
Da ich Anfänger bin und mich soweit schon durchgearbeitet habe, dass ich die Dateninhalte in HEX und ASCII lesen kann und später auch interpretieren kann, dass habe ich hinbekommen. Aber die Binärinhalte werden natürlich falsch im Programm interpretiert, da ich ja nur HEX und ASCII ablege!
Anlegen der Dateninhalte HEX und ASCII:
Java:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
 
public class BReader002
{
public static void convertToHex(PrintStream out, File file) throws IOException {
	InputStream is = new FileInputStream(file);
 
	int bytesCounter =0;		
	int value = 0;
	StringBuilder sbHex = new StringBuilder();
	StringBuilder sbText = new StringBuilder();
	StringBuilder sbResult0 = new StringBuilder();
	StringBuilder sbResult1 = new StringBuilder();
 
	while ((value = is.read()) != -1) {    
	    //convert to hex value with "X" formatter
            sbHex.append(String.format("%02X", value));
 
	    //If the chracater is not convertable, just print a dot symbol "." 
	    if (!Character.isISOControl(value)) {
	      	sbText.append((char)value);
	    }else {
	        sbText.append(".");
	    }
 
	    //if 16 bytes are read, reset the counter, 
            //clear the StringBuilder for formatting purpose only.
	    if(bytesCounter==15){
	      	sbResult0.append(sbHex).append("\n");
	      	sbResult1.append(sbText).append("\n");
	       	sbHex.setLength(0);
	        sbText.setLength(0);
	       	bytesCounter=0;
	    }else{
	        bytesCounter++;
	    }
       }
 
	//if still got content
	if(bytesCounter!=0){			
	     //add spaces more formatting purpose only
	    for(; bytesCounter<16; bytesCounter++){
		//1 character 3 spaces
		sbHex.append("");
	    }
	    sbResult0.append(sbHex).append("\n");
      	sbResult1.append(sbText).append("\n");
        }
 
        out.print(sbResult0); // HEX Daten
        out.print(sbResult1); // ASCII Daten

   is.close();
  }
 
   public static void main(String[] args) throws IOException
   {	
    	//display output to console
    	convertToHex(System.out, new File("C:\\Users\\....\\Documents\\Projekt Java\\aktuell_text.txt"));
 
    	} 
}
Da ich ja durch Vorgaben weis, wo die Binär Daten stehen, könnte ich mir wohl noch eine dritte Binär Datei speichern, aber das wiederfinden im der Gesamtdatei ist leider denn nicht möglich, da ich bei der HEX Datei mehr Informations Bytes durch die Binärinformation erhalte! So das die Gesamtanzahl der Datenbytes im Hex Format nicht mehr korrekt ist! Und so finde ich den nächsten Anfang (Record) innnerhalb der Datei nicht! In der Hex Information ist auch die Längenangabe der Records!
Für ein Denkanstoß wäre ich dankbar!
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge