为什么运行时显示找不到文件,而且程序并没有因异常而终止

为什么运行时显示找不到文件,而且程序并没有因异常而终止

public void exportPlayList() {

try {

File file=new File(this.getPlayListName()+"的歌单.txt");

file.createNewFile();

FileInputStream fis;

BufferedInputStream bis;

InputStreamReader isr;

FileOutputStream fos;

BufferedOutputStream bos;

OutputStreamWriter osw;

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

String str=((Song)(this.getMusicList().get(i))).toString();

   fis=new FileInputStream(str);    

   bis=new BufferedInputStream(fis);

   isr=new InputStreamReader(bis);

   fos=new FileOutputStream(file);

bos=new BufferedOutputStream(fos);

osw=new OutputStreamWriter(bos);

   int n=0;

   char[] cha=new char[100];

   while((n=isr.read(cha))!=-1){

    String s=new String(cha,0,n);

    osw.write(s);

    osw.flush();

   }    

fis.close();

bis.close();

isr.close();

fos.close();

bos.close();

osw.close();

}

}catch (FileNotFoundException e1) {

e1.printStackTrace();

}catch (IOException e) {

e.printStackTrace();

}


正在回答

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

2回答

你应该是异常之前的代码先执行了吧,然后才出现的异常。下面的代码中,是把歌曲信息转换为字符串作为文件名,而存储的时候是xxx的歌单.txt。所以肯定会找不到文件。

String str=((Song)(this.getMusicList().get(i))).toString();

   fis=new FileInputStream(str);    

这个题目的功能这么实现,把歌曲Song进行序列化,然后把歌曲的信息写入到文件中就可以了,不用再读取出来就行。

如果想进行读取,那么就把播放列表类也进行序列化,然后把播放列表写入到文件。再用读取序列化对象的方法把播放列表对象读出来,然后把歌曲再从播放列表中取出来。

祝学习愉快!

  • mly魉 提问者 #1
    代码运行成功了,非常感谢!
    2017-11-27 12:31:48
一叶知秋519 2017-11-24 14:54:03

FileInputStream fis = new FileInputStream(file); 参数应该是文件名。

  • 提问者 mly魉 #1
    但是,不是从文件里读数据然后写入文件里,要怎么办呢
    2017-11-25 09:42:39
  • 提问者 mly魉 #2
    不是FileInputStream有个构造方法参数是可以为Sring类型吗?
    2017-11-25 10:03:58
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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