如何使用bufferedreader/writer在java中复制图像

Raj*_*pta 0 java java-io

    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();
        }
        }
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题.是否可以使用BufferedReader和Writer Class?我知道如何使用InputStream和OutputStream制作图像副本,所以不要使用它来粘贴解决方案!

Jon*_*eet 5

这段代码有什么问题.

您正在为二进制数据使用基于文本的类.

是否可以使用BufferedReader和Writer Class?

不是在处理二进制数据时,没有.

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

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

从根本上说,使用ReaderWriter用于非文本数据会被破坏,并且会遇到麻烦.如果你在文本编辑器中打开文件并且看不到文本,那么它不是文本文件......(或者,它可能是一个文本文件,你使用了错误的编码,但是像图像和声音这样的东西不是自然文本.)

  • @RajatGupta:是的,绝对的.如果在记事本中打开它,您希望看到什么文本? (4认同)