Je veux lire les octets d'un fichier d'ondes dans un tableau. Étant donné que le nombre d'octets lis dépend de la taille du fichier d'ondes, je crée un tableau d'octets avec une taille maximale de 1000000. Mais cela entraîne des valeurs vides à la fin de la matrice. Donc, je voulais créer une matrice en augmentation dynamique et j'ai constaté que l'arraylist est la solution. Mais la fonction Lecture () de la classe AudioInputtream lit uniquement des octets uniquement dans un tableau d'octets! Comment puis-je transmettre les valeurs dans une arrayliste à la place? P>
3 Réponses :
Vous pouvez avoir un tableau d'octets comme: pour le reconvertir aux tableaux p> (Ensuite, vous aurez écrire un convertisseur pour transformer PS STRT> un octet [] code> sur
octet [] code>). p>
Liste
audioinputtream code> simplement avec
byteArrayOutPutStream code>. P>
ioexception code> est lancé si
cadresize code> n'est pas égal à
1 code>. Par conséquent, utilisez un tampon d'octet pour lire des données, comme: p>
*****. Java: 41: Impossible de trouver le symbole de symbole: méthode Lecture (java.util.list
Cela ne compile pas: il n'y a pas de manière automatique / intégrée pour convertir une liste
octet [] code>. En dehors de cela, en utilisant une liste
@ Joachim Sauer, tu as raison, j'ai oublié qu'il doit y avoir une conversion de octet code> à octet. Réponse modificative.
Je suppose que j'ai un nouveau problème maintenant. Il dit que "ne peut pas lire un octet unique si la taille du cadre est plus d'un octet". J'ai utilisé GetFramesize () de la classe Audioformat et cela revient '4'. Je suppose donc que cela signifie que la taille actuelle du cadre est de quatre octets.
Je n'ai pas eu cette erreur auparavant parce que j'ai lu tous les octets à la fois dans le tableau. Pas un à un en utilisant la boucle tandis que
@Duay Kanth, vous avez raison, si des images ne sont pas égales à 1, il jette un ioException code>. Mise à jour ....
Exemple de ce que votre code devrait ressembler à: P> ArrayList code> n'est pas la solution, BYTEARRAYOutPutStream est la solution. Créer un
byteAreArrayOutPutStream code> Écrivez vos octets dessus, puis invoquer
TobyeArray () code> pour obtenir les octets.
Ceci est de loin le meilleur et en fait la seule réponse réellement correcte qui ne lit pas d'octets un par un, mais pour une raison quelconque, il montre au bas de la page pour moi ...
Quelque chose comme ça devrait faire: désolé si le code est un peu faux. Je n'ai pas fait Java pendant un moment. P> En outre, soyez prudent si vous le mettez en œuvre comme un moment (vrai) boucle :) p> modifier: et voici une autre façon de Le faisant qui lit plus d'octets chaque fois: p> Notez que les méthodes de lecture () jettent une ioexception - la manipulation de cela est laissée comme un exercice pour le lecteur! P> p>
Il ne devrait pas utiliser une liste code> de
octet code> et lecture d'octet par octet est très lente.
Il veut une liste code> plutôt qu'un tableau. En outre, j'ai fourni un autre exemple de lecture en morceaux.
Il veut une liste code> car il ne connaît pas la taille en haut. C'est la solution correcte, même s'il n'utilise pas une liste
code>.
Il voulait une liste parce qu'il ne connaissait pas de meilleures solutions. Il voulait avoir un octet [] code> à la fin et ne se souciait pas des étapes intermédiaires.
Quelles sont les prochaines étapes que vous voulez faire avec cet article d'octet? Peut-être que vous n'avez même pas besoin de ce grand tampon temporaire.