A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一顿一只牛 中级黑马   /  2014-8-13 18:28  /  1460 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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)
求大神们解惑啊

4 个回复

倒序浏览
            BufferedInputStream bufis = new BufferedInputStream(fis);
                        BufferedOutputStream bufos = new BufferedOutputStream(fos);
你这2个变量定义在TRY代码块中,但是你在finally里又关闭。解决办法在  FileInputStream fis = null;
                FileOutputStream fos = null; 之后定义他们。我调试了下  可以了。
回复 使用道具 举报
nadax 发表于 2014-8-13 18:50
BufferedInputStream bufis = new BufferedInputStream(fis);
                        Buffer ...

定义在TRY代码块中,在finally里不能关闭的吗?
  我换成fis  fos关闭的话也行
回复 使用道具 举报
也可以的。  
回复 使用道具 举报
本帖最后由 地狱天堂 于 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了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马