Problem mit Base64 Encoding

  • Themenstarter Themenstarter Michael-O
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

Michael-O

Gast
Hallo,

habe mir mal aus Lust und Laune ein Programm geschrieben, welches Dateien von und nach Base64 transferriert.

Das Komische ist, mit plaintext funzt es, aber mit binaries funzt es nicht. Das Ergebnis ist gleich groß wie die Quelle, aber die Datei ist nicht lesbar.

Vllt sieht jemand von euch den Fehler in meinem Code

danke!

Code:
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;

public class Base64Transfer {
	
	public static void createBase64File(String filename) throws Exception {
		
		BufferedReader bf = new BufferedReader(new FileReader(filename));
		FileWriter fw = new FileWriter(filename+".base64");
		
		StringBuffer sb = new StringBuffer();
		
		while(bf.ready())
			sb.append((char) bf.read());
		
		bf.close();
		
		byte[] toEncode = sb.toString().getBytes();
		
		String base64Encoded = new sun.misc.BASE64Encoder().encode(toEncode);
		//System.out.println(base64Encoded);
		
		fw.write(base64Encoded);
		fw.flush();
		fw.close();
		
	}
	
	public static void createPlainFile(String filename) throws Exception {
		
		BufferedReader bf = new BufferedReader(new FileReader(filename));
		StringBuffer sb = new StringBuffer();
		
		while(bf.ready())
			sb.append((char) bf.read());
		
		bf.close();
		
		//System.out.println(sb.toString());
		
		byte[] base64Decoded = new sun.misc.BASE64Decoder().decodeBuffer(sb.toString());
		
		FileOutputStream fos = new FileOutputStream(filename+".plain");
		fos.write(base64Decoded);
		fos.close();
		
	}
	
	public static void main(String[] args) throws Exception {
		
				
		createBase64File(args[0]);
		createPlainFile(args[0]+".base64");
		
	}

}
 
ich habe den createPlainFile teil mit Base64 aus Thunderbird gefüttert und es funktioniert. Es liegt wohl an dem CreateBase64File
 
Ich habe das Ding jetzt umgebaut, habe die funktion übsehen:

Code:
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Base64Transfer {
	
	public static void createBase64File(String filename) throws Exception {
		
		FileInputStream fis = new FileInputStream(filename);
		FileOutputStream fos = new FileOutputStream(filename+".base64");
		
		new sun.misc.BASE64Encoder().encode(fis, fos);
		
		fis.close();
		fos.close();
	}
	
	public static void createPlainFile(String filename) throws Exception {
		
		FileInputStream fis = new FileInputStream(filename);
		FileOutputStream fos = new FileOutputStream(filename+".plain");
		
		new sun.misc.BASE64Decoder().decodeBuffer(fis,fos);
		
		fis.close();
		fos.close();
	}
	
	public static void main(String[] args) throws Exception {
		
				
		createBase64File(args[0]);
		createPlainFile(args[0]+".base64");
		
	}

}

trotzdem würde es mich auf jeden fall interessieren, was falsch an meiner methode ist.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben