IO Frage Hex-Output - Anfängerfrage

Status
Nicht offen für weitere Antworten.
J

javah

Gast
ich bin eigentlich nicht jemand der ohne selbst versuchen postet, aber ich hab schlicht und ergreifend keine ahnung wie ich anfangen soll .. ich poste mal die aufgabenstellung


Schreiben Sie ein Programm, das einen Hex-Dump von einer Datei ausgibt. Bei einer Text-Datei
mit dem Inhalt

Education's purpose is to replace an empty mind with an open one.

soll der Hex-Dump z. B. so (einfache Version):
45 64 75 63 61 74 69 6f 6e 27 73 20 70 75 72 70
6f 73 65 20 69 73 20 74 6f 20 72 65 70 6c 61 63
65 20 61 6e 20 65 6d 70 74 79 20 6d 69 6e 64 20
77 69 74 68 20 61 6e 20 6f 70 65 6e 20 6f 6e 65
2e 0a

aussehen

Die Ein- und Ausgabe-Dateien sollen als Kommandozeilen-Parameter eingegeben werden können.

--> wie das geht weiß ich

Schreiben Sie eine Klasse HexDumpOutputStream, die Sie von FilterOutputStream ableiten.
Verwenden Sie intern (d.h. außerhalb HexDumpOutputStream von nicht sichtbar) ein Objekt
vom Typ PrintStream. Diese Klasse bietet zum Beispiel die Methoden print, println, und
printf, mit der Sie Ihre Ausgabe formatieren können. Zweistellige Hexadezimalzahlen können
durch printf mit dem Format-String "%02x" ausgegeben werden.






hier hörts bei mir auf ich weiß einfach nich wie ich anfangen soll bis auf das
Code:
public class HexDumpOutputStream extends FilterOutputStream {
}
bitte helft mir.... wäre echt nett wenn ihr kurz die wichtigsten elemente aufschreiben könnt sind ja bestimmt nur paar zeilen.
 

Mörketid

Aktives Mitglied
hi, also du weisst nicht, wie das hier geht:


Schreiben Sie eine Klasse HexDumpOutputStream, die Sie von FilterOutputStream ableiten.
Verwenden Sie intern (d.h. außerhalb HexDumpOutputStream von nicht sichtbar) ein Objekt
vom Typ PrintStream. Diese Klasse bietet zum Beispiel die Methoden print, println, und
printf, mit der Sie Ihre Ausgabe formatieren können. Zweistellige Hexadezimalzahlen können
durch printf mit dem Format-String "%02x" ausgegeben werden.


richtig? sagt die das decorator muster was? klingt fast so, als sollst du einen eigenen decorator schreiben? hm...könnte mich auch irren. auf jeden fall sollst du ein object vom typ PrintStream anlegen und es soll nicht sichtbar sein, also muss es private sein:



Code:
public class HexDumpOutputStream extends FilterOutputStream {
    
    //so ists ausserhalb nicht sichtbar
    private PrintStream ps = new PrintStream(new File("pfad+dateiname+endung"));

    //dann mit printf die eingelesenen zahlen etc rausschreiben
   ps.printf("%02x", zahl); 
}

danach stehen die zahlen im hexformat in deiner datei in dem angegebenen ordner. hilft dir das erstmal?

gruß
 
G

Guest

Gast
ich muss halt von einer textdatei lesen und den inhalt in hex in eine neue schreiben

das lesen/schreiben ohne die hexumwandlung habe ich so gelöst


Code:
static void copy( InputStream input, OutputStream output ){
   
   try {
  
      byte[] cache = new byte[ 1 ]; // 1Byte
       
  
      for ( int len; (len = input.read(cache)) != -1; ){
      
            
       
            
        output.write( cache, 0, len );
        }
    }
    catch( IOException e ) {
    	
      System.err.println( e );
    }

kann man damit so weiterkommen oder brauch ich einen komplett neuen ansatz - wenn ja .. bitte wie.

bei der o.g lösung kommt identifier expected. cih versteh auch nich was das "zahl" sein soll.. die methode erfordert ja ein Object
 

Mörketid

Aktives Mitglied
hallo, die lösung war ja auch nicht komplett. was das object betrifft, kommt es darauf an, welches java du benutzt. ich habe 1.5, da gibts autoboxing, was bedeutet, du kannst sowas schreiben:

Code:
Integer zahl = 123;


hast du noch java 1.4 oder drunter, musst du es wrappen und zwar so:


Code:
Integer zahl = new Integer(123);

da der compiler bei dir gemeckert hat, nehme ich an, du musst die zweite lösung nehmen. ich DENKE mal, das dein ansatz in diesem fall nicht richtig ist, da du ja ohnehin von FilterOutputStream erbst. du sollst sicher die geerbten write methoden überschreiben und dann eben mit dem PrintStream object zahlen gleich im hex format rausschreiben.

in der java api sind die I/O klassen alle als dekorator angelegt und die Klasse FilterOutputStream ist so ein dekorator. alle klassen die davon erben, können seine write methoden überschreiben, um später einfach funktionalität zu einer ausgabe hinzufügen zu können. ein beispiel:

Code:
OutputStream o = new HexDumpOutputStream(new BufferedOutputStream(new FileOutputStream(("fdfd.txt"))));

in dem code wird die normale klasse FileOutputStream mit 2 dekoratoren dekoriert, einer zum puffern und eben deinem um hexdumps zu schreiben. man kann beliebig viele dekoratoren anhängen, wenn man will. ich denke mal, selbst wenn du das jetzt noch nicht gehört hast, soll das eine vorbereitung darauf sein. einen anderen grund für das erben von FilterOutputStream sehe ich auch nicht. ich lass mich aber gern belehren :cool:. probier das mal aus und mach meldung :).

gruß
mörketid
 
J

javah

Gast
Code:
import java.io.*;
public class HexDumpOutputStream extends FilterOutputStream
{
	/**
	 * Konstruktor ruft Superkonstruktor auf (FilterOutputStream)
	 */ 
	public HexDumpOutputStream( OutputStream out )
	{
		super( out );
	}
	
	/**
	 * Methode write der Superklasse wird ueberschrieben.
	 * 
	 */
	public void write( int b ) throws IOException
	{
		try
		{ 
			this.out.write( Integer.toHexString( b ).getBytes() );
		}
		 
		catch( Exception ex )
		{  
			super.write( b );
		}		
	}
	
public static void main (String[] args){
	
	
	 
 	
	
}	
	
	
	
	
	
}


kann man o.g. möglichkeit verwenden um es zu erlangen`? wie müsste da die main methode aussehen damit ich in der cmd-box "programmname quelle.txt ziel.txt" angeben kann


quelle -> textdatei
ziel -> hexdump


danke ;) sry falls ich mit zu einfachen sachen nerve
 

Mörketid

Aktives Mitglied
hallo, also wenn man das als dekorator machen würde, dann brauchst du keine main. du würdest dann sowas schreiben:

Code:
OutputStream out = new HexDumpOutputStream (new BufferedOutputStream(new FileOutputStream("c:/mytest.txt")));

aber es ist eben die frage, ob das so soll? frag doch nochmal nach. der vorteil eines dekorators ist, dass man ohne vererbung funktionalität hinzufügen kann, praktisch beliebig viel ohne vorhandenen code zu ändern. also in dem fall zum beispiel BufferedOutputStream.

bin mir jetzt nicht sicher, was ihr machen sollt und will dich nicht mehr verwirren ;). ich denke nämlich mal, dass du in der write methode einfach nur shreiben sollst:

Code:
ps.printf("%02x", deineZahl); //oder

ps.printf("%02x", new Integer(deineZahl));

also ohne viel schnickschnack. allerdings verstehe ich dann nicht die vererbung. aber ich muss ja nicht alles wissen :cool: .

grüße
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Input & Output Frage Java Basics - Anfänger-Themen 4
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Frage zu arithmetischen Operationen Java Basics - Anfänger-Themen 20
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
JavaSchmecktLecker Polymorphie Frage zur Methodenüberschreibung Java Basics - Anfänger-Themen 21
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
DoubleM Runtime.getRuntime().exec Frage Java Basics - Anfänger-Themen 2
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
O Frage: Formaler Typbezeichner? Java Basics - Anfänger-Themen 3
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
L Frage zum Array Java Basics - Anfänger-Themen 1
A Frage zum UML Design Java Basics - Anfänger-Themen 1
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
izoards Drucken Frage zu FAQ Beitrag Java Basics - Anfänger-Themen 2
J Frage zu meinem Code (OOP) Java Basics - Anfänger-Themen 4
sserio Split() -> Regex Frage. Java Basics - Anfänger-Themen 7
A OCA Study Guide: 2. Frage aus Kapitel 3 Java Basics - Anfänger-Themen 9
sserio Date Library Frage Java Basics - Anfänger-Themen 9
Max246Sch Frage zu Währungsrechner Code Java Basics - Anfänger-Themen 2
sserio Frage zu HashMaps Java Basics - Anfänger-Themen 20
sserio Frage zu Threading - Multithreading Java Basics - Anfänger-Themen 2
sserio Frage zu Lambda Ausdrücken Java Basics - Anfänger-Themen 7
sserio Frage zu BigInteger Java Basics - Anfänger-Themen 1
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
xxx12 Frage Java Basics - Anfänger-Themen 2
I Generelle Frage zu Mikroservices (Spring Boot?), Docker... Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
A Frage zur programmierung Java Basics - Anfänger-Themen 12
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
R Input/Output Frage zu Java IO Java Basics - Anfänger-Themen 6
M Frage zu printWriter Java Basics - Anfänger-Themen 5
C Frage zu OLSMultipleLinearRegression Java Basics - Anfänger-Themen 31
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Verständnis-Frage zu einer HÜ? Java Basics - Anfänger-Themen 1
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
L Frage zur Ticket Maschine Java Basics - Anfänger-Themen 1
J Frage zu OOP-Klassendiagramm Java Basics - Anfänger-Themen 8
OSchriever Frage zu Compiler Java Basics - Anfänger-Themen 8
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
F Frage betreff Programmierbücher zu Lagerverwaltung als Konsolenprogramm Java Basics - Anfänger-Themen 3
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
I String.split regex Frage Java Basics - Anfänger-Themen 2
N Best Practice Frage zum MVC-Pattern Java Basics - Anfänger-Themen 2
dieter000 Frage zu einem Beispiel... Java Basics - Anfänger-Themen 5
J Frage zum Loggen Java Basics - Anfänger-Themen 18
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
Zrebna Frage zum "Referenzen-konzept" in Java Java Basics - Anfänger-Themen 8
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
marcooooo Frage zu bestimmten Beispiel Java Basics - Anfänger-Themen 31
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
B Erste Schritte Learning Coding (!) Frage an erfahrene Programmierer. Java Basics - Anfänger-Themen 23
M konzeptuelle Frage: In welcher Klasse definiert man am Besten Methoden, die die Kommunikation mit dem User regeln? Java Basics - Anfänger-Themen 8
B Frage zum Code verständnis im Resultat Java Basics - Anfänger-Themen 10
C Exception-Frage Java Basics - Anfänger-Themen 3
J Eine Frage zur Schreibweise == ? : Java Basics - Anfänger-Themen 3
S Frage des Designs Java Basics - Anfänger-Themen 1
JavaTalksToMe Extends/Implements Frage Java Basics - Anfänger-Themen 3
pkm Frage zu Servletfunktion Java Basics - Anfänger-Themen 0
B Frage zur Währungsumrechnung Java Basics - Anfänger-Themen 3
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
D Frage zur IDE IntelliJ IDEA Java Basics - Anfänger-Themen 6
H Frage zum 2d Array Java Basics - Anfänger-Themen 1
N Frage zum Newton-Fraktal Java Basics - Anfänger-Themen 1
H Frage zu interfaces Java Basics - Anfänger-Themen 1
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
I Frage zu SkipList Java Basics - Anfänger-Themen 4
G Frage zu JScrollPane Java Basics - Anfänger-Themen 12
Kirby.exe Allgemeine Frage Java Basics - Anfänger-Themen 3
W Frage zu anonymen Klassen Java Basics - Anfänger-Themen 4
J Kleine Frage zu OOP Java Basics - Anfänger-Themen 371
S Frage Klasse und Objekte Java Basics - Anfänger-Themen 2
F Frage zu Iteratoren Java Basics - Anfänger-Themen 2
C Erste Schritte Frage zur ArrayList Java Basics - Anfänger-Themen 15
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
H Frage zur ermittlung eines doppelte Paars aus Sotieralgorithmus Java Basics - Anfänger-Themen 4
H Frage zum Array Java Basics - Anfänger-Themen 17
G Schach -Frage 2- Maussteuerung Java Basics - Anfänger-Themen 7
G Schach in Java - Allgemeine Frage zur Architektur Java Basics - Anfänger-Themen 7
B Fachliche Frage bei Rechnungen Java Basics - Anfänger-Themen 16
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
B Frage zu Datenbank Design - Rechnungen, Angebote... und deren Positionen Java Basics - Anfänger-Themen 4
H Frage zu Parameter einer Methode Java Basics - Anfänger-Themen 2
H Einfache Frage zur Punktnotation objektname.methode(wert) Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben