黑马程序员技术交流社区
标题:
关于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