2016-07-25 3 views
1

ich eine Frage habe, Bild Zeigen auf Android ~Bilddateien auf Android zu zeigen, würde ich, ob diese Art und Weise wissen, wie

Ich versuche werden die konvertierten Dateien zu senden in einem einzigen Inputstream ByteArray auf Android

mein Plan ist

  1. Dateien konvertieren einen Separator byte [] (On Server)
  2. hinzufügen für jede Datei konvertiert. und steckte sie in den einzigen response.Outstream (On Server)
  3. Holen Sie sich das Input (auf Android)
  4. Separator verwenden, erhalten eine jede byteArray von Input und wandeln sie in Bitmap-Datei BitmapFactory.decodeByteArray() verwenden und nicht gespeichert sie (auf android)

Sever:

OutputStream outputstream = response.getOutputStream(); 
imageDownload_fewfiles aa = new imageDownload_fewfiles(); 
DataOutputStream outputstream2 = new DataOutputStream(outputstream); 
outputstream2.writeBytes("[email protected]###[email protected]###"); 
outputstream2.write(aa.image_files()); 
outputstream2.writeBytes("[email protected]###[email protected]###"); 

android:

InputStream inputStream = http.getInputStream(); 
DataInputStream dataInputStream = new DataInputStream(http.getInputStream()); 

Ist das möglich? wenn möglich, wie bekomme ich jedes byteArray von inputStream ??

Bitte geben Sie mir einige Ratschläge .. Ich will nicht einen dritten Teil

+0

Machen Sie einfach eine Schleife lesen Chunks von diesem Eingangsstrom. Fügen Sie die Chuncks zu einem Byte-Array hinzu oder speichern Sie sie direkt in der Datei. Überprüfen Sie vor dem Hinzufügen, ob das Trennzeichen empfangen wurde (Sie erhalten möglicherweise nur einige wenige Bytes des Separators). – greenapps

+0

Es wäre ein viel einfacheres Protokoll, wenn Sie zuerst die Größe in Bytes des Bytearrays senden. Anstelle eines Trennzeichens. Wenn der Empfänger die Größe des Byte-Arrays zuerst erhält, ist es viel einfacher, genau so viele Bytes in einer Schleife zu lesen, wie angezeigt. – greenapps

+0

WARUM möchten Sie Bitmaps aus den empfangenen Daten machen? Sie werden viel Speicher kosten. Was wirst du mit ihnen machen? – greenapps

Antwort

0

Angenommen, Sie den Eingabestrom richtig erhalten verwenden.

int length; // This should be get from the request. 
byte[] array = new byte[length]; 
DataInputStream dataInputStream = new DataInputStream(inputStream); 
dataInputStream.readFully(array); 
+0

Danke ~ aber wie kann ich jede Datei ByteArray ??Weil jede Datei in einen einzelnen Stream geladen wird. Byte0Ray – tokhi

+0

@Tokhi Es hängt davon ab, wie Sie Dateien in den Stream einfügen, aber eine einfache Möglichkeit besteht darin, eine Liste von Ganzzahlen zu übergeben, die die Länge jeder Datei darstellt. Dann können Sie das Array durch die Ganzzahlen trennen. – Joshua

+0

Ich denke auch, dass die Länge jeder Datei senden. aber ich werde versuchen, mit text mit sigle outputstream zu senden. Also, ich denke, Trennzeichen muss die Länge jeder Datei und Text ByteArray wissen. Täusche ich mich? – tokhi

Verwandte Themen