package algodataufg02_j; import java.io.*; //Fuer BufferedReader & co public class Main { static String binStr = "00000000"; //Zeichen static char cEins = 'a'; static char cZwei = '1'; static char cDrei = '\b'; //Integer-Zahl static int iEins = 1; static int iZwei = 12345; static int iDrei = -99; //Float-Zahl static float fEins = 1; static float fZwei = 123.45f; static float fDrei = -3434.43f; //String static String szEins = "a"; static String szZwei = "Huggu_Wuggu"; static String szDrei = "test\b\btest\btest"; // DIE ANDEREN VARIABLEN //Zeichen static char acEins = '-'; static char acZwei; static char acDrei; //Integer-Zahl static int aiEins; static int aiZwei; static int aiDrei; //Float-Zahl static float afEins; static float afZwei; static float afDrei; //String static String aszEins; static String aszZwei; static String aszDrei; /** * @param args the command line arguments */ public static void main(String[] args) throws IOException { kmdoProz(); //Kommandoprozessor (Menue) aufrufen } public static String dec2bin(int d) { String bin = ""; int rest; int div; rest = d % 2; div = d / 2; if (div != 0) { bin = bin + dec2bin(div); } bin = bin + String.valueOf(rest); return bin; } static void byteAusgeb() throws IOException { DataInputStream in = new DataInputStream(new FileInputStream("testi")); int aktByte = 1; System.out.format("\nAddr\tDec\tHex\tBin\t ASC\n"); int i = 0; try { while (true) { aktByte = in.readByte(); aktByte = aktByte & 0xFF; //Gibt leider kein unsigned int in Java binStr = dec2bin(aktByte); i++; if (aktByte < 65 || aktByte > 126) { //Nicht druckbares Zeichen System.out.format("%04d:\t%3d\t%02x\t%08d '.'\n", i, aktByte, aktByte, new Integer(binStr)); } else { System.out.format("%04d:\t%3d\t%02x\t%08d '%c'\n", i, aktByte, aktByte, new Integer(binStr), aktByte); } } } catch (EOFException e) { System.out.format("\n"); } in.close(); } static void leseBin() throws IOException { DataInputStream in = new DataInputStream(new FileInputStream("testi")); acEins = in.readChar(); acZwei = in.readChar(); acDrei = in.readChar(); aiEins = in.readInt(); aiZwei = in.readInt(); aiDrei = in.readInt(); afEins = in.readFloat(); afZwei = in.readFloat(); afDrei = in.readFloat(); aszEins = in.readUTF(); aszZwei = in.readUTF(); aszDrei = in.readUTF(); in.close(); System.out.format("\nInteger: 1=%c, 2=%c, 3=%c\n", acEins, acZwei, acDrei); System.out.format("Double: 1=%d, 2=%d, 3=%d\n", aiEins, aiZwei, aiDrei); System.out.format("Float: 1=%f, 2=%f, 3=%f\n", afEins, afZwei, afDrei); System.out.format("String: 1=%s, 2=%s, 3=%s\n", aszEins, aszZwei, aszDrei); } static void schreibBin() throws IOException { DataOutputStream out = new DataOutputStream(new FileOutputStream("testi")); out.writeChar(cEins); out.writeChar(cZwei); out.writeChar(cDrei); out.writeInt(iEins); out.writeInt(iZwei); out.writeInt(iZwei); out.writeFloat(fEins); out.writeFloat(fZwei); out.writeFloat(fDrei); out.writeUTF(szEins); out.writeUTF(szZwei); out.writeUTF(szDrei); out.close(); } static void leseText() throws IOException { BufferedReader in = new BufferedReader( new InputStreamReader( new FileInputStream("testi"))); acEins = in.readLine().charAt(0); acZwei = in.readLine().charAt(0); acDrei = in.readLine().charAt(0); aiEins = Integer.valueOf(in.readLine()); aiZwei = Integer.valueOf(in.readLine()); aiDrei = Integer.valueOf(in.readLine()); afEins = Float.valueOf(in.readLine()); afZwei = Float.valueOf(in.readLine()); afDrei = Float.valueOf(in.readLine()); aszEins = in.readLine(); aszZwei = in.readLine(); aszZwei = in.readLine(); in.close(); System.out.format("\nInteger: 1=%c, 2=%c, 3=%c\n", acEins, acZwei, acDrei); System.out.format("Double: 1=%d, 2=%d, 3=%d\n", aiEins, aiZwei, aiDrei); System.out.format("Float: 1=%f, 2=%f, 3=%f\n", afEins, afZwei, afDrei); System.out.format("String: 1=%s, 2=%s, 3=%s\n", aszEins, aszZwei, aszDrei); } static void schreibText() throws IOException { BufferedWriter out = new BufferedWriter( new OutputStreamWriter( new FileOutputStream("testi"))); out.write(cEins + "\n" + cZwei + "\n" + cDrei + "\n" + iEins + "\n" + iZwei + "\n" + iDrei + "\n" + fEins + "\n" + fZwei + "\n" + fDrei + "\n" + szEins + "\n" + szZwei + "\n" + szDrei + "\n"); out.close(); } static void kmdoProz() throws IOException { String cmd; int exit = 0; int treffer = 0; //1 wenn ein Befehl erkannt wurde while (exit == 0) { treffer = 0; System.out.format("Menue:\nauf Textdatei schreiben: WT\naus Tex" + "tdatei lesen: RT\nauf Binaerdatei schreiben: WB\na" + "us Binaerdatei lesen: RB\nDatei byteweise ausgeben " + " B\nQuit - Programmende Q\n\n Eingabe: "); BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in)); cmd = buffer.readLine(); if (cmd.matches("^[WTRBQwtrbq]{1,2}$") != true) { treffer = 1; System.out.format("\nFehler, ungueltige Eingabe!\n\n"); } if (cmd.equalsIgnoreCase("WT") == true) { treffer = 1; System.out.format("\nSchreibe auf Textdatei\n\n"); schreibText(); } if (cmd.equalsIgnoreCase("RT") == true) { treffer = 1; System.out.format("\nLese aus Textdatei\n\n"); leseText(); } if (cmd.equalsIgnoreCase("WB") == true) { treffer = 1; System.out.format("\nSchreibe auf Binaerdatei\n\n"); schreibBin(); } if (cmd.equalsIgnoreCase("RB") == true) { treffer = 1; System.out.format("\nLese aus Binaerdatei\n\n"); leseBin(); } if (cmd.equalsIgnoreCase("B") == true) { treffer = 1; System.out.format("\nGebe Datei byteweise aus\n\n"); byteAusgeb(); } if (cmd.equalsIgnoreCase("Q") == true) { treffer = 1; System.out.format("\nProgrammende\n\n"); exit = 1; } if (treffer != 1) { System.out.format("\nFehler, Befehl nicht gefunden!\n\n").println(); } } } }