character kodierung, barcode für barcode font erzeugen

dermoritz

Bekanntes Mitglied
Ich bin etwas am verzweifeln:

wir haben ein uraltes c++ Programm, welches einen String für einen Barcodefont (128c) codiert. Nun gibt es leider nur Java-Lösungen die fertige Barcodes als Grafik erzeugen - nützt mir gar nix.
Dann hab ich noch einen Java-Code gefunden der einen String für einen anderen Font erzeugt: Java Barcode Font Encoder Class Library - nützt mir auch nix.

Nun würde ich gerne das c++ Programm migrieren und scheitere schon am simpelsten: wie kann ich in java direkt characters/ints in eine (txt)Datei schreiben?
in c++ macht man z.b. (char)0x17 und später hat man in der Textdatei genau eine 0x17 stehen (per hex-editor sieht man das ja) - wie mache ich das in java?

(irgendwie sind in java "char" ja etwas uni-kodiertes mit 2 byte?!)
 
Hoffe das hilft dir weiter.

Java:
public static void main(final String[] args) throws IOException, SecurityException, NoSuchMethodException
   {
      BufferedOutputStream os = null;
      try
      {
         os = new BufferedOutputStream(new FileOutputStream(new File("/tmp/test.txt")));
         final byte[] b = new byte[] { 0x65 };
         os.write(b, 0, 1);
      }
      catch (final IOException e)
      {
         e.printStackTrace();
      }
      finally
      {
         try
         {
            if (os != null)
            {
               os.close();
            }
         }
         catch (final IOException e)
         {
            e.printStackTrace();
         }
      }
   }
 
vielen Dank,

ich ungeduldiger Mensch hatte aber auch parallel dran gearbeitet. Bei mir fehl noch die korrekte try-catch-finally Verschachtelung. Ansonsten ist es zumindest ähnlich. Nur Interesse halber: was hat es mit 0x65 auf sich?

Also so sieht meins aus:
Java:
public static void writeBinBytes(List<Integer> in, String datei) throws IOException {
		FileOutputStream output = new FileOutputStream(datei);
		DataOutputStream data_out = new DataOutputStream(output);
		for (Integer integer : in) {
			data_out.writeByte(integer);
		}
		output.close();
	}

wo ich gerade über die "finally"s nachdenke: macht es Sinn im finally Block das "close" zu machen und dann die Exception neu zu werfen? Ich hätte die Exception schon gerne nach "Außen geworfen", aber gleichzeitig würde ich mich gerne um das "close" kümmern.
 
Bei 0x65 gibt das 0x an, dass der compiler die Zahl als hex interpretieren soll. Im finallyblock die Streams zu schließen macht Sinn. Ob man dann die Exception von close fangen sollte oder nicht, darüber kann man sich streiten. Ich bevorzuge es die Exception nicht weiter zu werfen.
 

Zurück
Oben