关于导出歌单的问题

关于导出歌单的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    // 7.导出歌单
    public void outputPlayList() {
        try {
            FileOutputStream fos = new FileOutputStream(getPlayListName() + "歌单.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            FileInputStream fis = new FileInputStream(getPlayListName() + "歌单.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
         
/*          Iterator<Song> it = getMusicList().iterator();
            while (it.hasNext()) {
                oos.writeObject(it.next());
            }*/

                       List<Song> musicList = getMusicList();

                         for(int i=0;i<musicList.size();i++) {

                        oos.writeObject(musicList.get(i));

                         } 

            oos.flush();
            fos.close();
            oos.close();
            ArrayList playList = (ArrayList) ois.readObject();
            System.out.println(playList);
        catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("成功导出!");
 
    }

http://img1.sycdn.imooc.com/climg//59b76f8a0001b21628261432.jpg

在上传作业的时候,向老师问了导出歌单出错怎么处理的问题。老师给出的回答,一是模糊不清,二是与我之前的写法没有本质上的区别,三是还是错的。  不知道怎么改,请助教详细解答。

想达到导出歌单生成一个.txt文档,又要将写入的重新读出,实现序列化和反序列化怎么写呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
Tender10 2017-09-12 17:47:37

Song类后面需要实现一下Serializable接口,应该在歌曲类后面实现一下。另外你代码中的如下部门代码都是不需要的,你可以在尝试一下。

FileInputStream fis = new FileInputStream(getPlayListName() + "歌单.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
ArrayList playList = (ArrayList) ois.readObject();
System.out.println(playList);
catch (ClassNotFoundException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
}


  • 提问者 櫻絳_ #1
    谢谢助教,原来是我的Serializable接口写错位置了。还有一个问题,我确实想再实现反序列化,具体应该怎么写?自己尝试了几次都不对。
    2017-09-13 13:35:24
  • Tender10 回复 提问者 櫻絳_ #2
    你可以不要在序列化下面就去反序列化,你可以在写一个方法单独去进行反序列化的过程,把你之前反序列化的代码分离出去试一下。如果有什么问题,可以将错误原因及反序列的代码截图。
    2017-09-13 14:24:33
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师