Java konvertiert Dateien in Byte -Array
Schlüsselwörter: Datei, Dateistream, Byte -Stream, Byte -Array, binär
Zusammenfassung: Die jüngste Anforderung, die bei der Arbeit auftritt, besteht darin, HTTP zu verwenden, um binäre Daten an die entsprechende Schnittstelle des Servers und eine Reihe gemischter Binärdaten wie UserID und Datei (verschlüsselt) zu übertragen. Dieser Artikel zielt darauf ab, einige Wissen und Zusammenfassung des Konvertierens von Dateien mit Java in Byte -Arrays aufzuzeichnen.
FileInputStream
Lesen Sie Dateien mit FileInputStream
FileInputStream ist eine Unterklasse von InputStream, mit der Informationen aus einer Datei gelesen werden. Der Konstruktor empfängt einen Dateityp oder einen String -Typ, der den Dateipfad darstellt.
Datei Datei = new Datei ("filepath"); FileInputStream fis = new FileInputStream (Datei); BytearrayoutputStream
Verwenden Sie BytearrayoutputStream, um die Dateidaten in FileInputStream vorzulesen
BytearrayoutputStream wird verwendet, um einen Puffer im Speicher zu erstellen, und alle Daten, die an den "Stream" gesendet werden, müssen in diesem Puffer platziert werden.
BytearrayoutputStream Bos = New BytearrayoutputStream (fis); Byte [] B = neues Byte [1024]; int len = -1; while (len = fis.read (b))! = -1) {bos.write (b, 0, len);};};};};Hinweis: Die Schreibmethode von BytearrayoutputStream hat drei überlastete Formulare:
schreiben (int b)
Schreiben Sie angegebene Bytes
schreiben (byte [] b)
Schreiben Sie an das gesamte Byte -Array B
Schreiben Sie (Byte [] B, int, int len)
Schreiben Sie in das Byte-Array B, starten Sie vom Abschluss von B und schreiben Sie Len Bytes.
Der zweite wird hier nicht verwendet, aber der dritte wird verwendet. Im Code beträgt die Anzahl der Lesevorgänge in Puffer B im Allgemeinen 1024 (da die angegebene Länge angezeigt wird, wenn B definiert ist). Nur wenn das Ende gelesen wird, reicht es möglicherweise nicht genug 1024 Bytes, und die tatsächliche Anzahl der Lesebytes wird gelesen. Beim Schreiben in den Puffer, wenn die Anzahl der Schreibvorgänge nicht angegeben ist, wird Len nicht angegeben, dann wird das gesamte B geschrieben. Auch wenn es in B nur einen Teil des Inhalts gibt, werden 1024 Bytes weiterhin geschrieben. Dies führt dazu, dass das resultierende Byte -Array bei Verwendung von Tobytearray nicht die tatsächliche Länge ist!
Dadurch schreibt der Dateistrom aus dem Eingabestream in den BytearrayoutputStream.
Verwenden Sie die Methode Tobytearray () von BytearrayoutputStream, um das Byte -Array der Datei zu erhalten.
byte [] FileByte = bos.tobytearray ();
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!