所以,我有一个AudioInputStream
,它从FileInputStream
读取。我想关闭FileInputStream
关闭AudioInputStream
。
有没有办法完全加载音频,所以我不必直接从文件中传输音频?
答案 0 :(得分:1)
您可以将其存储在Java Clip
。
示例:强>
Clip clip = AudioSystem.getClip();
clip.open(/*your AudioInputStream*/);
将剪辑设为一个字段,以便稍后使用。
答案 1 :(得分:0)
如果需要AudioInputStream
,可以将整个文件加载到字节数组中:
static AudioInputStream load(File file) throws IOException {
try (FileInputStream in = new FileInputStream(file)) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
byte[] buf = new byte[4096];
for (int b; (b = in.read(buf)) > -1;) {
bytes.write(buf, 0, b);
}
return AudioSystem.getAudioInputStream(
new ByteArrayInputStream(bytes.toByteArray());
}
}
或者在Java 7中:
static AudioInputStream load(File file) throws IOException {
return AudioSystem.getAudioInputStream(
new ByteArrayInputStream(Files.readAllBytes(file.toPath()));
}