Java 反序列化数据流
我有一个问题,我已经处理了很长一段时间了。当尝试反序列化文件夹中的自定义声音对象时,我继续遇到3个异常。IOException、NullPointerException和StreamCorruptedException。请看一看: 读音方法:Java 反序列化数据流,java,exception,serialization,Java,Exception,Serialization,我有一个问题,我已经处理了很长一段时间了。当尝试反序列化文件夹中的自定义声音对象时,我继续遇到3个异常。IOException、NullPointerException和StreamCorruptedException。请看一看: 读音方法: public static Sound readSound(String loc){ try{ FileInputStream fis = new FileInputStream(loc); ObjectInputS
public static Sound readSound(String loc){
try{
FileInputStream fis = new FileInputStream(loc);
ObjectInputStream ois = new ObjectInputStream(fis);
fis.close();
ois.close();
return (Sound)ois.readObject();
}catch(Exception e){
System.out.println("Failed to read a serialized object.");
e.printStackTrace();
return null;
}
}
收到的例外/错误:
此处粘贴太多,粘贴不正确
加载声音:
添加声音只是将声音添加到ArrayList和JComboBox中
private static File saveDirFile = new File("/Users/francisj12/Desktop/ACData/");
private static File saveDirFileSounds = new File(saveDirFile.getPath()+"/sounds/");
public static void loadAllSounds(){
if(!saveDirFile.exists()){
saveDirFile.mkdir();
}
if(!saveDirFileSounds.exists()){
saveDirFileSounds.mkdir();
}
for(int x=0; x<saveDirFileSounds.list().length; x++){
try{
File sndFl = new File(saveDirFileSounds.listFiles()[x].getPath());
Sound newSound = Serialize.readSound(sndFl.getPath());
addSound(newSound);
}catch(Exception e){
e.printStackTrace();
continue;
}
}
}
下面是.ser文件的样子:一旦我开始在变量上使用transient,这样我就可以序列化我的自定义声音对象,我还不了解transient,它开始使.ser看起来如下,而不是一大堆奇怪的字符,现在只是一行奇怪的字符
sr警报、声音、xp
希望这是你们需要的所有信息,非常感谢你们的帮助 在返回Soundois.readObject之前,不应关闭inputstream;阅读您的对象,然后关闭输入流。@xiaowang非常感谢,似乎已经完成了这个技巧!我应该意识到。如果你不介意的话,我还有一个问题,什么时候,确切地说是什么。冲水对溪流有什么作用?我知道它能释放记忆,但这就是我真正知道的。