我需要将 AudioClip 序列化为文件,作为另一个数据结构的一部分,不幸的是,AudioClip 似乎不可序列化。有没有我可以序列化为代理的对象。我可以根据需要在 AudioClip 之间来回移动吗?
我尝试了这个简单的代码/类
import java.applet.AudioClip;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.URL;
import javax.swing.JApplet;
public class RandomClass implements Serializable {
private AudioClip myAudioClip;
private int RandomInteger;
private String RandomString;
public RandomClass(String soundpath){
soundpath = soundpath.replace(" ", "%20");
soundpath = soundpath.replace("\\", "/");
try{
URL sound = new URL("file:/"+soundpath);
myAudioClip = JApplet.newAudioClip(sound);
}catch(Exception e){
e.printStackTrace();
}
}
public void serializeMe(){
try{
FileOutputStream fout = new FileOutputStream("c:\\serialized.ser");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(this);
oos.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
public static void main(String args[]){
RandomClass d = new RandomClass("C:\\audioclip.wav");
d.serializeMe();
}
}
我得到一个 java.io.NotSerializableException: sun.applet.AppletAudioClip
我真正想要的是音频剪辑与其他成员对象或类型一起保存在单个序列化文件中。因此,每当我重新加载文件(实际上将包含这些 RandomClass 对象的 arrayList)时,我都会获得这些 RandomClass 对象中的每一个的每个数据成员,而无需将原始音频剪辑保留在硬盘上(即我想创建某种包含音频剪辑作为其数据成员的一部分的对象的存档)。我还需要能够播放音频剪辑,而无需将它们保存回 *.wav 到硬盘上。就像 VLC 可以在 zip 文件中播放整个播放列表,而无需提取每个剪辑。有任何想法吗?
谢谢,