Java 是否将.wav文件转换为二进制文件,然后再转换回.wav?

Java 是否将.wav文件转换为二进制文件,然后再转换回.wav?,java,audio,binary,wave,Java,Audio,Binary,Wave,我正在用java做一个项目,需要加密一个wave文件。那么,是否有一个直接的过程将wave文件转换成二进制文件并返回?我将对二进制数据应用加密算法。试试库。大多数语言都有以二进制模式读取和写入文件的实用程序。如果您碰巧在Linux系统上,它与字符模式相同。无论如何,这不是将其“转换”为二进制的问题,只是一种不同的读取方法。是的 File file = new File("music.wav"); byte[] data = new byte[file.length()]; FileInputSt

我正在用java做一个项目,需要加密一个wave文件。那么,是否有一个直接的过程将wave文件转换成二进制文件并返回?我将对二进制数据应用加密算法。

试试库。

大多数语言都有以二进制模式读取和写入文件的实用程序。如果您碰巧在Linux系统上,它与字符模式相同。无论如何,这不是将其“转换”为二进制的问题,只是一种不同的读取方法。

是的

File file = new File("music.wav");
byte[] data = new byte[file.length()];
FileInputStream in = new FileInputStream(file);
in.read(data);
in.close();

//encrypt data

FileOutputStream out = new FileOutputStream(file);
out.write(data);
out.close();

当然,假设在处理数据后它仍然是一个有效的wav文件。

您可以尝试插件:JLayer

我的意思是比特…1和0的系列s@Uday:是的,我意识到了!我的意思是,你想让二进制代表什么?文件已经是一系列的1和0。为什么不能将文件读入一个
字节[]
?为什么它特别是一个.wav文件很重要?将二进制文件读入字符数组可能是一件非常愚蠢的事情。@jarnbjo:是的,我错了。我的意思是
byte
array…你会发现计算机中的大多数东西已经是二进制的了。:)无法保证in.read(数据)将读取所有文件。声明它将最多读取b.length字节。是的,但这假设数组不够大,事实就是这样。File.length()是文件的长度。但是,如果您想小心,可以将读取返回的值与文件的大小进行比较,以确定。@Trey-否,它与数组的大小无关。它与流实现有关。永远不要假设
read()
将填充您的数组。谢谢!!这起作用了!!:)到现在为止,我一直在不必要地干预AudioInputStream@Uday Kanth-是的,您应该关注read()而不是读取完整的文件。它可能适用于小文件,也可能适用于大文件,但不能保证。您可以在循环中读取,也可以使用类似IOUtils的内容。