第2章 字符流与字节流

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

package com.itheima_02;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*
 * 使用字符流复制文本文件
 *
 * 数据源        IODemo.java
 * 目的地        d:\\IODemo.java

 *
 */
public class FileCopyDemo {
public static void main(String[] args) throws IOException  {
//创建字符输入流对象
FileReader fr = new FileReader("IODemo.java");
//创建字符输出流对象
FileWriter fw = new FileWriter("d:\\IODemo.java");
//一次读写一个字符
/*int ch;
while((ch = fr.read()) != -1) {
fw.write(ch);
fw.flush();
}*/
//一次读写一个字符数组
int len;//用于存储读到的字符个数
char[] chs = new char[1024];
while((len = fr.read(chs)) != -1) {
fw.write(chs,0,len);
fw.flush();
}
//释放资源
fw.close();
fr.close();
}
}

1.2.2 字符流复制图片的问题解析

1.3 利用字节流复制文本文件
利用字节流将当前工程下的IODemo.java拷贝到d盘下
1.3.1 案例代码十

package com.itheima_03;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/*

  • 使用字节流复制文本文件
  • 数据源 IODemo.java
  • 目的地 d:\a\IODemo.java

/
public class FileCopyDemo {
public static void main(String[] args) throws IOException {
//创建字节输入流对象
FileInputStream fis = new FileInputStream("IODemo.java");
//创建字节输出流对象
FileOutputStream fos = new FileOutputStream("d:\a\IODemo.java");
//一次读写一个字节
/
int by;
while((by = fis.read()) != -1) {
fos.write(by);
}*/
//一次读写一个字节数组
int len;//存储读到的字节个数
byte[] bys = new byte[1024];
while((len = fis.read(bys)) != -1) {
fos.write(bys,0,len);
}
//释放资源
fos.close();
fis.close();
}
}

1.4 复制图片

字节流可以操作所有类型的文件,因为所有的文件在计算机中都是以字节形式存储
而字符流只能用来操作纯文本类型的文件,不能操作字节类型的文件
1.4.1 案例代码十一

package com.itheima_04;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*
 * 分别使用字符流和字节流复制图片
 *
 * 二进制文件只能使用字节流进行复制(使用windows自带记事本打开读不懂的)
 * 文本文件的复制即可使用字符流,也可以使用字节流
 *
 */
public class CopyImage {
public static void main(String[] args) throws IOException  {
//method();
//创建字节输入流对象
FileInputStream fis = new FileInputStream("传智学院.jpg");
//创建字节输出流对象
FileOutputStream fos = new FileOutputStream("d:\\传智学院.jpg");
//一次读写一个字节数组
int len;//用于存储读到的字节个数
byte[] bys = new byte[1024];
while((len = fis.read(bys)) != -1) {
fos.write(bys,0,len);
}
//释放资源
fos.close();
fis.close();
}

private static void method() throws FileNotFoundException, IOException {
//创建字符输入流对象
FileReader fr = new FileReader("传智学院.jpg");
//创建字符输出流对象
FileWriter fw = new FileWriter("d:\\传智学院.jpg");
//一次读写一个字符数组
int len;//用于存储读到的字符个数
char[] chs = new char[1024];
while((len = fr.read(chs)) != -1) {
fw.write(chs,0,len);
fw.flush();
}
//释放资源
fw.close();
fr.close();
}
}

原文地址:http://blog.51cto.com/13517854/2104296

时间: 2024-08-10 07:52:49

第2章 字符流与字节流的相关文章

黑马程序员—IO(一)流概述、字符流、字节流、流操作规律

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 第一节     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都在IO包中. 4)流按其操作数据的类型分为两种:字节流和字符流. 5)流按其流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象基流:Inp

黑马程序员——IO流概述、字符流、字节流、流操作规律(一)

第一节     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都在IO包中. 4)流按其操作数据的类型分为两种:字节流和字符流. 5)流按其流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象基流:InputStream和OutputStream 2)字符流的抽象基流:Reader和Writer 注:此四个

字符流;字节流;带缓冲的输入输出流;以及用scanner读文件

概念: InputStream类是字节输入流的抽象类,是所有字节输入流的父类. OutputStream类是字节输入流的抽象类,是所有字节输出流的父类. In(可以理解为读)Out(可以理解为写) 一.字节流的读与写 FileInputStream类与FileOutStream类都是用来操作磁盘文件的. 1. FileInputStream(String name); 填String类型的路径名 FileInputStream(File file); 填入File对象 2. FileOutStr

理解Java中字符流与字节流的区别

1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序列的对象被称为输入流:能够向其写入一个字节序列的对象被称为输出流. 2. 字节流 Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据.Java中最基本的两个字节流类是InputStream和OutputStream,它们分别代表了组基本的输入字节流和输出字节流.InputStre

Java IO字符流与字节流

一.基本概念 流:从一端流向另一端,从源头到目的地. 始终与程序为中心,都是程序与文件|数组|网络连接|数据库进行操作. 二.IO流分类 1.流向: 输入流和输出流 2.数据: 字节流:二进制,可以处理文本文件,视频,音频等 . 字符流:文本文件,只能处理纯文本,全款为可见字符(.txt..html). 3.功能: 节点:包裹源头 处理:增强功能,提高性能. 三.字节流与字符流 1.字节流 输入流:InputStream int read(byte[] b) int read(byte[] b,

压缩字符流和字节流和全站压缩过滤器

1 public static void main(String[] args) throws Exception { 2 ByteArrayOutputStream bos = new ByteArrayOutputStream(); //字符流 3 OutputStreamWriter osw = new OutputStreamWriter(bos); 4 PrintWriter pw = new PrintWriter(osw); 5 pw.write("helloworld"

Java中字符流与字节流的区别

字符流处理的单元为2个字节的Unicode字符,分别操作字符.字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组.所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件.图片.歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点. 所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘.在读取文件(特别是文本文件)时,也是一个字节一

Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律

第一讲     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都在IO包中. 4)流按操作数据分为两种:字节流和字符流. 5)流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象基流:InputStream和OutputStream 2)字符流的抽象基流:Reader和Writer 注:此四个类派生出来

JAVA 字符流与字节流的区别

Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换.而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换.字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高