歌单导出异常
case 8:// 导出歌单
System.out.println("导出歌单");
System.out.println("请输入要导出的播放列表名称:");
playlistname = in.next();
playlist = one.searchPlayListByName(playlistname);
if (playlist != null) {
try {
FileOutputStream fos = new FileOutputStream(playlistname + "歌单.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
try {
oos.writeObject(playlist);
System.out.println("导出成功!");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("导出失败!");
}
fos.close();
oos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
System.out.println("未找到该播放列表");
}
break;
case 9:// 返回上一级菜单
arg = false;
break;
default:
System.out.println("请输入指定数字进行操作!请重新输入");
break;import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class PlayList implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String playListName;
List<Song> musiclist = new ArrayList<Song>();
Scanner in=new Scanner(System.in);
public PlayList(String playListName ) {
this.playListName = playListName;
}
public String getPlayListName() {
return playListName;
}
public void setPlayListName(String playListName) {
this.playListName = playListName;
}
public List<Song> getMusiclist() {
return musiclist;
}
public void setMusiclist(List<Song> musiclist) {
this.musiclist = musiclist;
}
// 将歌曲添加到播放列表
public void addToPlayList(Song song) {
this.getMusiclist().add(song);
}
// 显示播放列表中所有歌曲
public void displayAllSong() {
System.out.println("播放列表中的所有歌曲为:");
for(Song song:this.getMusiclist()) {
System.out.println(song);
}
}
// 通过ID查询歌曲
public Song searchSongById(String id) {
for(Song song:(this.getMusiclist())) {
if(song.getId().equals(id)) {
return song;
}
}
return null;
}
// 通过名称查询歌曲
public Song serchSongByName(String n) {
for(Song song:(this.getMusiclist())) {
if(song.getName().equals(n)) {
return song;
}
}
return null;
}
// 修改歌曲
public void updateSong(String id, Song song) {
for(Song a:(this.getMusiclist())) {
if(a.getId().equals(id)) {
int i=this.getMusiclist().indexOf(a);
this.getMusiclist().set(i, song);
}
}
}
// 从播放列表删除歌曲
public void deleteSong(String id) {
Song song=null;
for(Song a:(this.getMusiclist())) {
if(a.getId().equals(id)) {
song=a;
break;
}
}
this.getMusiclist().remove(song);
}
}异常代码
java.io.NotSerializableException: java.util.Scanner
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at songdemo.Test.playlist(Test.java:239)
at songdemo.Test.main(Test.java:367)
正在回答
你让歌曲类implements Serializable一下。只有Serializable的类,才能用ObjectOutputStream进行写对象。祝:学习愉快
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星