黑马程序员技术交流社区

标题: 关于mp3的复制问题 [打印本页]

作者: 一顿一只牛    时间: 2014-8-13 18:28
标题: 关于mp3的复制问题
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/*
* 复制.mp3文件
*
*    因为是媒体文件,所以使用字节流
*
* */
public class Mp3Copy {
        public static void main(String[] args){
                mp3Copy();
        }
        public static void mp3Copy(){
                FileInputStream fis = null;
                FileOutputStream fos = null;
                try{
                        fis = new FileInputStream("g:\\关喆 - 征服.mp3");
                        fos = new FileOutputStream("g:\\关喆 - 征服123.mp3");
                        //通过缓冲区提高效率。
                        BufferedInputStream bufis = new BufferedInputStream(fis);
                        BufferedOutputStream bufos = new BufferedOutputStream(fos);
                                int by = 0;
                                while((by=bufis.read())!=-1){
                                        bufos.write(by);
                                }
                }
                catch(IOException e){
                        throw new RuntimeException("复制失败");
                }
                finally{
                        if(bufis != null)
                                try{
                                        bufis.close();
                                }
                                catch (IOException e)
                                {
                                        e.printStackTrace();
                                }
                        if(bufos != null)
                                try{
                                        bufos.close();
                                }
                                catch (IOException e)
                                {
                                        e.printStackTrace();
                                }
                }
        }
}
编译时出错 bufos cannot be resolved to a variable
        bufos cannot be resolved

        at Mp3Copy.mp3Copy(Mp3Copy.java:35)
        at Mp3Copy.main(Mp3Copy.java:15)
求大神们解惑啊
作者: nadax    时间: 2014-8-13 18:50
            BufferedInputStream bufis = new BufferedInputStream(fis);
                        BufferedOutputStream bufos = new BufferedOutputStream(fos);
你这2个变量定义在TRY代码块中,但是你在finally里又关闭。解决办法在  FileInputStream fis = null;
                FileOutputStream fos = null; 之后定义他们。我调试了下  可以了。
作者: 一顿一只牛    时间: 2014-8-13 19:00
nadax 发表于 2014-8-13 18:50
BufferedInputStream bufis = new BufferedInputStream(fis);
                        Buffer ...

定义在TRY代码块中,在finally里不能关闭的吗?
  我换成fis  fos关闭的话也行
作者: nadax    时间: 2014-8-13 20:00
也可以的。  
作者: 地狱天堂    时间: 2014-8-13 20:01
本帖最后由 地狱天堂 于 2014-8-13 20:07 编辑

BufferedInputStream bufis = new BufferedInputStream(fis);
BufferedOutputStream bufos = new BufferedOutputStream(fos);
定义在try里了,成了局部变量,只有try可以调用。下面的finally里的bufis, bufos调用不到。
把BufferedInputStream bufis =null;变成成员变量,定义在try外面。那么try和finally就都可以调用bufis了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2