Ich habe Server, der BMP-Datei und einen Client in Android sendet, wo ich versuche, die Daten zu speichern, die ich erhielt. ich die Daten in einer Datei speichern mit dem folgenden Code:Speichern Sie empfangene Daten in Java
...
byte[] Rbuffer = new byte[2000];
dis.read(Rbuffer);
try {
writeSDCard.writeToSDFile(Rbuffer);
} catch (Exception e) {
Log.e("TCP", "S: Error at file write", e);
} finally {
Log.e("Writer", "S: Is it written?");
}
...
void writeToSDFile(byte[] inputMsg){
// Find the root of the external storage.
// See http://developer.android.com/guide/topics/data/data- storage.html#filesExternal
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/download");
if (!(dir.exists())) {
dir.mkdirs();
}
Log.d("WriteSDCard", "Start writing");
File file = new File(dir, "myData.txt");
try {
// Start writing in the file without overwriting previous data (true input)
Log.d("WriteSDCard", "Start writing 1");
FileOutputStream f = new FileOutputStream(file, true);
PrintWriter ps = new PrintWriter(f);
// PrintStream ps = new PrintStream(f);
ps.print(inputMsg);
ps.flush();
ps.close();
Log.d("WriteSDCard", "Start writing 2");
f.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
Log.i(TAG, "******* File not found. Did you" +
" add a WRITE_EXTERNAL_STORAGE permission to the manifest?");
} catch (IOException e) {
e.printStackTrace();
}
}
Aber in der Ausgabe erhalte ich den Objekt-IDs
z.B. [B @ 23fgfgre [B @ eft908eh ...
(Wo [Mittel Array B bedeutet byte.The @ der Typ von den Hexadezimalziffern ID.The trennt eine Objekt-ID oder Hash-Code sind.)
Das gleiche Ergebnis erhalte ich auch mit "PrintStream" anstelle von "PrintWriter" ...
Wie kann ich die tatsächliche Ausgabe speichern?
Haben Sie versucht, eine 'BufferedOutputStream' aus Ihrem' FileOutputStream' Erstellung und Verwendung der 'write (byte [])' Methode? –
'Rbuffer = neues Byte [2000];'. Ist Ihre BMP-Datei kleiner als 2000 Byte? – greenapps
'dir.mkdirs();'. Überprüfen Sie den Rückgabewert. Es kann falsch sein. Fahren Sie nicht mit Ihrem Code fort, wenn dieser falsch ist, sondern einen Toast anzeigen und zurückkehren. – greenapps