Comment écrire big endian ByteBuffer à little endian en Java

J'ai actuellement un Java ByteBuffer qui dispose déjà de données en format Big Endian. Je veux écrire dans un fichier binaire comme Little-Endian.

Voici le code qui écrit simplement le fichier dans un format Big-Endian:

 public void writeBinFile(String fileName, boolean append) throws FileNotFoundException, IOException
 {
     FileOutputStream outStream = null;
     try
     {
         outStream = new FileOutputStream(fileName, append);
         FileChannel out = outStream.getChannel();
         byteBuff.position(byteBuff.capacity());
         byteBuff.flip();
         byteBuff.order(ByteOrder.LITTLE_ENDIAN);
         out.write(byteBuff);
     }
     finally
     {
         if (outStream != null)
         {
            outStream.close();
         }
     }

 }

Noter que byteBuff est un ByteBuffer qui a été rempli en format Big Endian.

Mon dernier recours est une force brute de la méthode de création d'un autre tampon et en le définissant ByteBuffer à little endian, puis la lecture de la "getInt" valeurs de l'original (big endian) de la mémoire tampon, et "setInt" la valeur pour le petit-boutiste de la mémoire tampon. J'imagine que il y a une meilleure façon...

Avez-vous essayé de Apache commons (commons.apache.org/io/api-release/org/apache/commons/io/...) pour qui?
+1 pour Apache Commons: ne pas réinventer la roue 🙂

OriginalL'auteur user1575243 | 2013-01-24