base64 encode audio-Datei, und senden Sie als String wieder entschlüsseln Sie die Zeichenfolge

Habe ich fest auf das Problem, für ein paar Stunden versucht es zum laufen zu bringen. Im Grunde, was ich versuche zu tun, ist die folgende. Base64 encodieren einer audio-Datei abgeholt von einer SD-Karte auf ein Android-Gerät, Base64-Kodieren Sie, wandeln Sie es in einen String und dann decodiert den String mit Base64 wieder und speichern Sie die Datei auf sdcard. Es klingt alles ziemlich einfach und funktioniert großartig, wenn Sie Sie mit einem text-Datei. Zum Beispiel, wenn ich erstellen Sie eine einfache text-Datei, nennen Sie es, dave.text und injizieren Sie einige text in "Hello Dave" oder etwas ähnliches, es funktioniert großartig, aber nicht, wenn ich versuche, das gleiche zu tun mit einer Binär-Datei, audio-in diesem Beispiel. Hier ist der code, den ich verwende.

File file = new File(Environment.getExternalStorageDirectory() + "/hello-4.wav");
byte[] FileBytes = FileUtils.readFileToByteArray(file);

byte[] encodedBytes = Base64.encode(FileBytes, 0);
String encodedString = new String(encodedBytes);                                        
Utilities.log("~~~~~~~~ Encoded: ", new String(encodedString));

byte[] decodedBytes = Base64.decode(encodedString, 0);
String decodedString = new String(decodedBytes);
Utilities.log("~~~~~~~~ Decoded: ", new String(decodedString));

try {
    File file2 = new File(Environment.getExternalStorageDirectory() + "/hello-5.wav");
    FileOutputStream os = new FileOutputStream(file2, true);
    os.write(decodedString.getBytes());
    os.flush();
    os.close();
} catch (Exception e) {
    //TODO Auto-generated catch block
    e.printStackTrace();
}

An diesem Punkt, wenn ich versuche die Datei zu speichern, wird es beschädigt. Die audio-Datei-Hallo-5.wav ist in der Größe größer dann das original und es nicht zu spielen.

Irgendwelche Ideen, was mache ich hier falsch? Wenn ich versuche zu speichern decodedBytes mit os.schreiben(decodedBytes) es funktioniert aber nicht, wenn er in einen String konvertiert und getBytes() verwendet wird.

Irgendwelche Ideen? Danke!

InformationsquelleAutor ddavtian | 2011-06-23
Schreibe einen Kommentar