当前位置: 首页 > 面试题库 >

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

丁曦
2023-03-14
问题内容
    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制作图像的副本,所以不要粘贴使用它的解决方案!


问题答案:

此代码有什么问题。

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

BufferedReader和Writer类可以吗?

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

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

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

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



 类似资料:
  • 你好,虽然我读了很多其他答案,但我不明白如何关闭BufferedReader而不发送输入。这是我程序的阻塞部分: 当我从主线程调用“endListing()”时,程序终止--但不会在用户输入任何内容之前终止。我想让程序立即终止--如何启动这个BufferdReader(像BufferedReader一样创建(新的InputStreamReader(System.in))? 我试图在主线程中的这个线

  • 问题内容: 我有一个堆栈A,我想创建一个与堆栈A相同的堆栈B。​​我不希望堆栈B只是指向A的指针- 我实际上是想创建一个包含相同元素的新堆栈B堆栈A的顺序与堆栈A相同。堆栈A是字符串的堆栈。 谢谢! 问题答案: 只需使用Stack类的clone()方法(它实现Cloneable)。 这是一个使用JUnit的简单测试用例: 编辑: tmsimont:这会为我创建“未经检查或不安全的操作”警告。有什么

  • 我试图在我的降价文件中插入一个图像,但它没有渲染。 我也尝试过使用绝对路径,但也没有成功。

  • 问题内容: 我正在逐行打印数据,并希望像表一样组织数据。 我最初用过。 但是对于某些较大的名称,电话号码会被推离对齐状态 我正在尝试使用String.format()实现此效果。谁能告诉我使用的格式语法? 我尝试过,但这不是我想要的。我希望它看起来像这样: 约翰·史密斯123456789 鲍勃·麦迪逊123456789 查尔斯·理查兹123456789 编辑:这些答案似乎适用于System.out

  • 问题内容: 可以说我有一个文本文件:data.txt(包含2000行) 如何从500-1500,然后从1500-2000读取给定的特定行,并显示特定行的输出? 此代码将读取整个文件(2000行) 如何修改上述代码以读取特定行? 问题答案: 我建议使用java.io.LineNumberReader。它扩展了BufferedReader,您可以使用它来获取当前行号 您还可以使用Java 7 ,如果适

  • 问题内容: 如何在Java中复制对象? 问题答案: 创建一个副本构造函数: 每个对象还有一个克隆方法,可用于复制对象,但不要使用它。创建类和执行不正确的克隆方法太容易了。