Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将base64字符串转换为字节数组并以mp3文件格式保存在java中_Java_Xml_File_Audio_Base64 - Fatal编程技术网

将base64字符串转换为字节数组并以mp3文件格式保存在java中

将base64字符串转换为字节数组并以mp3文件格式保存在java中,java,xml,file,audio,base64,Java,Xml,File,Audio,Base64,我在Linux上编写MP3文件时遇到问题。以下是我的情况: 我有一条通过JMS传递的XML消息。XML有一个元素,该元素是表示MP3音频文件的Base64编码字符串。在将XML编组到对象时,我使用JIBX。然后,JIBX将Base64编码字符串转换为字节[]。一、 然后,使用commons io项目中的FileUtils将字节[]写入文件系统 void writeMP3File(final byte[] data, final String filePath) throws IOExceptio

我在Linux上编写MP3文件时遇到问题。以下是我的情况:

我有一条通过JMS传递的XML消息。XML有一个元素,该元素是表示MP3音频文件的Base64编码字符串。在将XML编组到对象时,我使用JIBX。然后,JIBX将Base64编码字符串转换为字节[]。一、 然后,使用commons io项目中的FileUtils将字节[]写入文件系统

void writeMP3File(final byte[] data, final String filePath) throws IOException {

    final File mp3File = new File(basePath + IOUtils.DIR_SEPARATOR + filePath);

    mp3File.getParentFile().mkdirs(); // Ensure any parent directories are created

    FileUtils.writeByteArrayToFile(mp3File, data);
}
当我稍后尝试播放该文件时,MP3播放器将不会播放该文件。此外,当我转到文件系统并查看文件时,我得到:

>文件TestFile1.mp3
TestFile1.mp3:ASCII文本,不带行终止符

我还尝试使用FileOutputStream编写文件;同样的结果也会发生。如何将字节[]写入文件并设置MPEG的文件类型。因此,我想在文件系统上看到的是:

>文件TestFile1.mp3
TestFile1.mp3:MPEG-ADTS,第三层,v2.5,8kbits,8khz,单声道


我从未使用过这些技术,但是。我会说,拿一个已知的MP3文件,把它的内容作为纯文本。然后通过上面的系统发送一份副本,并将其输出与原件进行比较。看看这些技术是否有任何差异。如果我能得到原始文件的副本,我会这样做。然后,尝试将输出文件与MP3文件格式进行比较?终于解决了问题。原始发送者使用ApacheCommons编解码器Base64对MP3 Base64进行编码。然后将他们的JIBX设置设置为Base64对已经Base64编码的数据进行编码。双基64进位。仅供参考,任何遇到这个问题的人:1。使用JIBX并设置type=“byte[]”时,JIBX将自动将数据转换为Base64。2.使用FileOutputStream,您可以确保数据采用正确的文件格式。4.有一个“base64”命令是GNU核心UTIL的一部分,它将帮助验证编码是否正确。