字符流拷贝图片,丢失数据的原因?

1、字节流可能会截断字符,此时就会乱码;而字符流不会。

2、

/**
 *数据丢失:
 * 读到的数据,在码表里找不到对应的数。则返回一个未知字符对应的数字,未知字符占一个字节。有对应数据,则返回原数据。
 *
 *何时使用字符流,字节流??
 *  读写字符数据的时候用字符流;图片等读写的数据不需要转换的时候使用字节流。
 */
public class CopyImage {
    public static void main(String[] args) throws IOException {
        File file1 = new File("E:\\图片\\5.jpg");
        File file2 = new File("E:\\5.jpg");

        FileReader fileReader = new FileReader(file1);
        FileWriter fileWriter = new FileWriter(file2);

        char[] buf = new char[1024];
        int length=0;
        while ((length=fileReader.read(buf))!=-1) {
            fileWriter.write(new String(buf,0,length));
        }
        fileWriter.close();
        fileReader.close();
    }
}

时间: 2024-08-24 22:13:03

字符流拷贝图片,丢失数据的原因?的相关文章

IO 复习字节流字符流拷贝文件

/* 本地文件 URL 文件拷贝 *//*文本文件拷贝 可以通过 字符流,也可以通过字节流*/ /*二进制文件拷贝 只可以通过字节流*//* 希望这个例子能帮助搞懂 字符流与字节流的区别 */ import java.io.*; //in order to utilize stream object import java.util.*; // in order to utilize ArrayList import java.net.*; class Copy{ public static v

IO流 拷贝图片

/* * 复制一个图片: * 1.用字节读取流对象和图片关联 * 2.用字节写入流对象创建一个图像文件,用于存储获取到的图片 * 3.通过循环读写,完成数据的存储 * 4.关闭资源 */ import java.io.*; public class CopyPic { public static void main(String[] args) { FileOutputStream fos=null; FileInputStream fis=null; try { fos=new FileOut

java IO流拷贝图片

图片属于字节流,使用InputStream和OutputStream. import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyImage { public static void main(String[] args) throws IOException { File inFile = n

字符流和字节流的选择

一.何时使用字符流,何时使用字节流?依据是什么? 使用字符流的应用场景:如果是读写字符数据时候,使用字符流. 使用字节流的应用场景:如果读写的数据都不需要转化成字符的时候,使用字节流. 二.使用字符流拷贝图片的问题 public class copyImage { public static void main(String[] args) throws IOException { //找到目标文件 File inFile=new File("E:\\1.jpg"); File des

Java之字符流读写文件、文件的拷贝

字符流读数据 – 按单个字符读取 创建字符流读文件对象: Reader reader = new FileReader("readme.txt"); 调用方法读取数据: int data = reader.read(); // 读取一个字符,返回该字符代表的整数,若到达流的末尾,返回-1 字符流读数据 – 按字符数组读取 创建字符流读文件对象: Reader reader = new FileReader("readme.txt"); 调用方法读取数据: // 读取

java IO流复制图片

一.使用字节流复制图片 //字节流方法 public static void copyFile()throws IOException { //1.获取目标路径 //(1)可以通过字符串 // String srcPath = "E://11.jpg"; // String destPath = "E://22.jpg"; //(2)通过文件类 File srcPath = new File("E://11.jpg"); File destPat

Java IO 字节流与字符流 (二)

概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 字节流的抽象基类 InputStream,OuputStream 字符流的抽象基类 Reader,Writer 注: 这些基类的子类都是以基类的名称结尾的,如FileReader,FileInputStream 字节流 字节流:以字符为导向的流 简单介绍一个例子,演示字节流对图片的复制 1: imp

第2章 字符流与字节流

1.1 概述IO流分类:流向输入流 读取数据 FileReader Reader输出流 写出数据 FileWriter Writer数据类型字节流 字节输入流 读取数据 InputStream字节输出流 写出数据 OutputStream字符流字符输入流 读取数据 Reader字符输出流 写出数据 Writer1.2 利用字符流复制文本文件利用字符流将当前工程下的IODemo.java拷贝到d盘的a文件夹下1.2.1 案例代码九 package com.itheima_02; import ja

Java:IO流之字符流Reader、Writer详解

java.io包中:字符流 字符流的两个抽象基类: Reader         Writer 文件的读取:Reader抽象类(java.io包中) 直接子类的构造方法: FileReader(File file) 在给定从中读取数据的 File 的情况下创建一个新 FileReader. FileReader(FileDescriptor fd) 在给定从中读取数据的 FileDescriptor 的情况下创建一个新 FileReader. FileReader(String fileName