黑马程序员技术交流社区

标题: IO复制mp3文件问题 [打印本页]

作者: liqi    时间: 2014-8-12 21:11
标题: IO复制mp3文件问题
下面的程序一直出错:为了找出错,没有写try catch,直接抛;
把目的改为"d:\\初雪.mp3",即把C盘改为D盘,就复制成功了;这是怎么回事?
public static void main(String[] args) throws IOException{
          FileInputStream fi = new FileInputStream("f:\\初雪.mp3");
          FileOutputStream fo = new FileOutputStream("c:\\初雪.mp3");
          BufferedInputStream bi = new  BufferedInputStream(fi);
          BufferedOutputStream bo = new  BufferedOutputStream(fo);
          int len =0;
         
          while((len=bi.read(bt))!=-1){
                  bo.write(len);
          }
          bi.close();
          bo.close();
          }
作者: ssy1939    时间: 2014-8-13 01:43
木有明白你的意思,难道是说复制到c盘不行?
作者: fantacyleo    时间: 2014-8-13 01:49
你先在C盘随便建个文件看看行不行
作者: 刷新召唤    时间: 2014-8-13 15:24
楼主 你的read方法里的bt是什么 缓冲区数组? 你定义了吗?
作者: snowaves    时间: 2014-8-13 16:19
用的是win7的系统吧,你的安全等级不够,你把安全等级调到最低就可以了
作者: 毕业生    时间: 2014-8-13 17:31
while  里面的bt是什么?
作者: 一顿一只牛    时间: 2014-8-13 19:16
while((len=bi.read(bt))!=-1){
                  bo.write(len);
          }

我们用了缓冲区,直接 while((len=bi.read())!=-1)就行了
不是用定义数组存储读到的字符
作者: ❤如止水之絕境    时间: 2014-8-13 19:56
是不是缺少这样一个东西
  1. byte [] bt = new byte[1024];
复制代码
不然,你的bt哪来的?
作者: 柳超    时间: 2014-8-13 20:48
我的win8系统也是,系统文件权限不够
作者: paozhuanyinyu    时间: 2014-8-13 21:16
去掉read方法里的bt,你还没定义字节数组
作者: 李章敏    时间: 2014-8-13 21:39
系统权限不够吧                                                                             
作者: 柠萌不    时间: 2014-8-13 21:56
进来学习学习,IO不是很懂-。-
作者: jw在路途    时间: 2014-8-13 21:57
同感,学习学习~
作者: jw在路途    时间: 2014-8-13 21:59
楼上的哥们,无主题 纯回复 18分0.0...  佩服你的坚持。。。
作者: rolling-stone    时间: 2014-8-13 22:02
具体什么错误?楼主要写明白,是异常,还是变异错误?
作者: 继续悲伤    时间: 2014-8-13 22:09
你要么把bt去掉,要么在上面加一个byte数组!
作者: liqi    时间: 2014-8-14 06:57
刷新召唤 发表于 2014-8-13 15:24
楼主 你的read方法里的bt是什么 缓冲区数组? 你定义了吗?

这跟数组没关系,数组可用可不用,用了效率当然高
作者: liqi    时间: 2014-8-14 06:58
ssy1939 发表于 2014-8-13 01:43
木有明白你的意思,难道是说复制到c盘不行?

对啊,只要往c盘复制,一大堆错误
作者: liqi    时间: 2014-8-14 06:59
snowaves 发表于 2014-8-13 16:19
用的是win7的系统吧,你的安全等级不够,你把安全等级调到最低就可以了

win8的,我试试
作者: liqi    时间: 2014-8-14 07:01
fantacyleo 发表于 2014-8-13 01:49
你先在C盘随便建个文件看看行不行

确实不可以,谢了,看来不是程序的问题,是计算机设置的问题了
作者: liqi    时间: 2014-8-14 07:03
毕业生 发表于 2014-8-13 17:31
while  里面的bt是什么?

刚开始定义了一个数组变量,byte[]  bt = new byte[10224];
修改了下程序,忘了删掉这个了
作者: liqi    时间: 2014-8-14 07:05
❤如止水之絕境 发表于 2014-8-13 19:56
是不是缺少这样一个东西不然,你的bt哪来的?

刚开始定义了个数组,出错后,把数组删掉,用read()方法,读一个写一个,忘了把这个bt删了
作者: liqi    时间: 2014-8-14 07:11
柳超 发表于 2014-8-13 20:48
我的win8系统也是,系统文件权限不够

恩,刚才试了下,确实。第一次碰到这种问题
作者: liqi    时间: 2014-8-14 07:12
paozhuanyinyu 发表于 2014-8-13 21:16
去掉read方法里的bt,你还没定义字节数组

错误和这个没关系
作者: liqi    时间: 2014-8-14 07:16
李章敏 发表于 2014-8-13 21:39
系统权限不够吧

对,才知道还有这个权限
作者: sunshine9091    时间: 2014-8-14 07:21
哎,还以为让我们纠错呢!
作者: 张涛的狂怒    时间: 2014-8-14 08:22
计算机问题。。。。。。。。。
作者: 沿途小将    时间: 2014-8-14 08:38
你还没读取,就不断输出,你觉得这样行吗?
作者: 狂飙的yellow.co    时间: 2014-8-14 08:58
呵呵,好牛掰的样子!!!!!!!!!
作者: 柳超    时间: 2014-8-16 00:14
liqi 发表于 2014-8-14 07:11
恩,刚才试了下,确实。第一次碰到这种问题

因为 我之前 复制Mp3就是这个问题 ,研究了很久才有的这个结论
作者: Tidom    时间: 2014-8-18 18:23
楼主问题如下:
            1.while((len=bi.read(bt))!=-1)   read()方法中的"bt"应该是个字节数组,楼主没有定义。
            2.目的文件的路径,跟是否在C盘应该没关系吧




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