用字节输入输出流复制图片,为什么显示无法打开图片,因为该图片已损坏,复制后的图片比原来图片内存小很多

Tagore.666 2019-05-04 07:40:54
复制图片显示成功的,但是打开却说已损坏,查看复制后的图片发现只有4个字节。
...全文
1737 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fightingccc 2020-12-10
  • 打赏
  • 举报
回复
我也是一样的问题 请问你找到解决方法了吗?
易水寒(^o^) 2019-12-04
  • 打赏
  • 举报
回复
我这样复制图片没有问题
易水寒(^o^) 2019-12-04
  • 打赏
  • 举报
回复
易水寒(^o^) 2019-12-04
  • 打赏
  • 举报
回复
为什么我运行可以呢
  • 打赏
  • 举报
回复
复制图片实际上是通过文件的输入输出流实现对文件的读与写 写的是字节或者字符。 你看你的代码accept = fip.read() accept你写成了int型,那么你写的就是每次字节读取的下标,没有写字节,所以你复制的图片是损坏的 fip.read()返回的是每次写入的下标,你要换成byte数组。才能写入字节 以下是我以前写的一段,我用的字符流,你把chars换成字节数组就行了,你可以参考下
 InputStreamReader isr = null;
        try {
//          copyFile("C:\\Users\\Administrator\\Desktop\\test.txt", "C:\\Users\\Administrator\\Desktop\\test_copy.txt", false);
            File file = new File("C:\\Users\\Administrator\\Desktop\\test.txt");
            isr = new InputStreamReader(new FileInputStream(file), "utf-8");
            char[] chars = new char[1024];

            while (isr.read(chars) != -1) {
                System.out.println(new String("gbk", chars));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                isr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

58,450

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧