菜鸟级h5 2017-08-14 12:00 采纳率: 40%
浏览 1064
已采纳

文件读写流读写图片异常

public class FileDemo {

public static void main(String[] args) {
    try {
        File f = new File("e:/e/123456.jpg");
        FileInputStream ff = new FileInputStream(f);
        BufferedInputStream bf = new BufferedInputStream(ff);
        FileOutputStream fo = new FileOutputStream(f.getAbsolutePath());
        BufferedOutputStream bo = new BufferedOutputStream(fo);
        byte[]b=new byte[1024];
        int len=0;
        while((len=bf.read(b))!=-1) {
            bo.write(b);
            bo.flush();
        }
        bo.close();
        fo.close();
        bf.close();
        ff.close();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

}
我用这个程序读来一个图片,然后发现图片说明
就是这样的。请问我的程序哪里有问题?谢谢解答

  • 写回答

2条回答 默认 最新

  • 鼠晓 博客专家认证 2017-08-15 01:19
    关注

    我把你的代码调试了一下发现,,这句代码有很大问题

      FileOutputStream fo = new FileOutputStream(f.getAbsolutePath());
    
    

    输出流会把文件清空,,,也就是你这句话会把 你的 f文件清空,,,可以找一个文本文件测试一下下面代码:

                            File f = new File("G:/test.txt");
                FileInputStream ff = new FileInputStream(f);
                BufferedInputStream bf = new BufferedInputStream(ff);
                File f2 = new File("G:/test.txt");
                FileOutputStream fo = new FileOutputStream(f2);
    

    通过源码发现,,确实是要清空的,,源码中有个是否追加的参数,,默认是falst(不追加,清空)
    图片说明
    图片说明

    你需要修改路径,,如下:

     public static void main(String[] args) {
        try {
            File f = new File("e:/e/123456.jpg");
            FileInputStream ff = new FileInputStream(f);
            BufferedInputStream bf = new BufferedInputStream(ff);
            FileOutputStream fo = new FileOutputStream("e:/e/10086.jpg");
            BufferedOutputStream bo = new BufferedOutputStream(fo);
            byte[]b=new byte[1024];
            int len=0;
            while((len=bf.read(b))!=-1) {
                bo.write(b);
                bo.flush();
            }
            bo.close();
            fo.close();
            bf.close();
            ff.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
    }
    

    如上代码,,完美执行,,,有问题还可以追问,,,木有问题,请采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器