erstellen Sie eine ArrayList von Byte
Will ich Lesen bytes aus einer wave-Datei in ein array. Da die Anzahl der bytes, die gelesen wurden, hängt von der Größe der wave-Datei, die ich erstellen ein byte-array mit einer maximalen Größe von 1000000. Aber dies führt in leere Werte am Ende des Arrays. So, ich wollte eine dynamisch wachsende Arrays, und ich fand, dass die ArrayList ist die Lösung. Aber die read () - Funktion der AudioInputStream-Klasse liest bytes in ein byte-array! Wie übertrage ich die Werte in eine ArrayList statt?
Was sind die nächsten Schritte, die Sie tun möchten, mit diesem byte-array? Vielleicht ist Sie gar nicht brauchen, die großen temporären Puffer.
InformationsquelleAutor Uday Kanth | 2011-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ein array von byte wie:
Zu konvertieren zurück zu arrays
(Dann haben Sie zu schreiben, einen Konverter zu verwandeln
Byte[]
zubyte[]
).EDIT: Sie mit
List<Byte>
falsch, ich werde nur zeigen Ihnen, wie Sie zu LesenAudioInputStream
einfach mitByteArrayOutputStream
.PS Eine
IOException
wird ausgelöst, wennframeSize
ist nicht gleich1
. Daher verwenden ein byte-Puffer, um Daten zu Lesen, etwa so:Diese nicht kompilieren: es gibt keine automatische/built-in Weg, um zu konvertieren eine
List<Byte>
zu einembyte[]
. Abgesehen davon, mit einemList<Byte>
furchtbar space-ineffizient.Sauer, du hast Recht, ich habe vergessen, dass es muss eine Konvertierung von
Byte
byte. Ändern der Antwort.Ich denke, ich habe ein neues problem jetzt. Es wird sagen, 'Nicht Lesen kann, ein einzelnes byte, wenn die frame-Größe ist mehr als ein byte' . Ich habe getFrameSize() Audioformat Klasse, und es ist wieder '4'. Also ich denke, das bedeutet, dass das aktuelle frame-Größe von vier bytes.
Ich habe nicht bekommen, diesen Fehler vor, denn ich lese alle bytes auf einmal in das array. Nicht mithilfe der while-Schleife
InformationsquelleAutor Buhake Sindi
ArrayList
ist nicht die Lösung, ByteArrayOutputStream ist die Lösung. Erstellen Sie eineByteArrayOutputStream
schreiben Sie Ihre bytes zu, und rufen Sie danntoByteArray()
um die bytes.Beispiel, wie Ihr code Aussehen sollte:
InformationsquelleAutor Kaj
Etwas soll dies gerne tun:
Sorry wenn der code ein wenig falsch. Ich habe nicht getan, Java, für eine Weile.
Auch, seien Sie vorsichtig, wenn Sie tun, es umzusetzen als eine while(true) Schleife 🙂
Edit: Und hier ist ein alternativer Weg, es zu tun, dass mehr liest bytes jedes mal:
Beachten Sie, dass sowohl read () - Methoden werfen eine IOException aus, - den Umgang mit diesem ist Links als übung für den Leser!
List
vonByte
und Lesen byte für byte ist sehr langsam.Er will eine
List
eher als ein array. Auch habe ich ein Alternatives Beispiel für das Lesen in Stücke schneiden.er will eine
List
weil er nicht weiß, die Größe up-front. Das ist die richtige Lösung, auch 'wenn es nichtList
.Er wollte eine Liste, weil er nicht wusste, bessere Lösungen. Er wollte ein
byte[]
am Ende und habe keine sorgen über Zwischenschritte.InformationsquelleAutor Brian Beckett