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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 凝聚 中级黑马   /  2013-10-24 10:19  /  2451 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 凝聚 于 2013-10-24 15:51 编辑

package Nineteen;
import java.io.*;
public class twelve {
        public static void main(String[] args)throws IOException
        {
FileOutputStream fos=null;
FileInputStream    fis=null;
try
{
        fos=new FileOutputStream("D:\\图片\\自己喜欢的\\3b7f47074d6e084c25ec1e883952339f.jpg");
        //fis=new FileInputStream("me.bmp");
fis=new FileInputStream("me.jpg");
        byte[]buf=new byte[1024];
        int len=0;
        while((len=fis.read(buf))!=-1)
        {
                fos.write(buf,0,len);
        }
}
catch(IOException e)
{
        throw new RuntimeException("复制文件失败");
}
finally
{
        try
        {
                if(fis!=null)
                        fis.close();
        }
        catch(IOException e)
        {
                throw new RuntimeException("读取文件失败");
        }
        try
        {
                if(fos!=null)
                        fos.close();
        }
        catch(IOException e)
        {
                throw new RuntimeException("写入文件失败");
        }
}
        }
}
这段代码显示“文件复制错误”是怎么回事啊。

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
你的每一次读取数据的while循环里面,只有write,就是将数据写入内存中,但是没有flush(),仅仅是在最后的关闭流的时候,系统能够自动flush。这样不太好吧!
回复 使用道具 举报
张宏祚 发表于 2013-10-24 10:22
你的每一次读取数据的while循环里面,只有write,就是将数据写入内存中,但是没有flush(),仅仅是在最后的 ...

依然不行啊
回复 使用道具 举报
本帖最后由 王松松 于 2013-10-24 10:54 编辑

应该是你在写入的时候代码书写错误了。

  1. <P>byte[]buf=new byte[1024];
  2.         int len=0;
  3.         while((len=fis.read(buf))!=-1)
  4.         {
  5.                 fos.write(buf,0,len);
  6.         }
  7. </P>
复制代码
改为下面代码试一试:
  1. int ch= 0;

  2. while ((ch = fis.read())!=-1)
  3. {
  4. fos.write(ch);
  5. }
复制代码
回复 使用道具 举报
IO流~
回复 使用道具 举报
可能是你输入流和输出流搞混了,
FileOutputStream():创建一个具有指定名称的文件中写入数据的输出文件流,就是你要复制到的文件地址。
FileOutputStream():从文件系统中的某个文件中获取输入字节。就是你准备复制文件的地址。
你上面代码交换下路径,应该就不会有文件复制错误


回复 使用道具 举报
凝聚 中级黑马 2013-10-24 15:50:16
7#
heke 发表于 2013-10-24 15:27
可能是你输入流和输出流搞混了,
FileOutputStream():创建一个具有指定名称的文件中写入数据的输出文件流 ...

哥们说点什么好呢,你太给力,果然如此啊,是我太马虎了,谢谢了:victory:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马