小编典典

如何使用BufferedReader / Writer在Java中复制图像

java

    File file = new File("download.png");
    File newfile = new File("D:\\Java.png");
    BufferedReader br=null;
    BufferedWriter bw=null;
    try {
        FileReader fr = new FileReader(file);
        FileWriter fw = new FileWriter(newfile);
        br = new BufferedReader(fr);
        bw = new BufferedWriter(fw);
        char[] buf = new char[1024];
        int bytesRead;
        while ((bytesRead = br.read(buf)) > 0) {
            bw.write(buf, 0, bytesRead);
        }
        bw.flush();
        }
        catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            br.close();
        bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        }

此代码有什么问题。BufferedReader和Writer类可以实现吗?我知道如何使用InputStream和OutputStream制作图像的副本,所以不要粘贴使用它的解决方案!


阅读 322

收藏
2020-11-30

共1个答案

小编典典

此代码有什么问题。

您正在使用基于文本的类来存储二进制数据。

BufferedReader和Writer类可以吗?

不,当您处理二进制数据时,不会。

我知道如何使用InputStream和OutputStream制作图像的副本,所以不要使用它粘贴解决方案!

那是您应该使用的解决方案,因为这些是为二进制数据设计的类。

从根本上来说,使用ReaderWriter处理非文本数据被破坏了,并带来了麻烦。如果您在文本编辑器中打开文件而看不到文本,则它不是文本文件…(或者,它可能是文本文件,您使用了错误的编码,但是图像和声音之类的东西不是自然的文字。)

2020-11-30