字符流/转换流

字符流/转换流:由于字节流操作中文不方便,所以出现了。

总共有以下方法:

1、InputStreamReader、OutputStreamWriter

2、FileReader、FileWriter

3、BufferedReader BufferedWriter的普通方法

4、BufferedReader BufferedWriter的特殊方法

字符流=字节流+编码表

编码的方法:

byte[] getBytes(String charsetName):使用指定的字符集合把字符编码成字节数组            String→byte[]

解码的方法:

String(byte[] bytes,String charsetName):通过指定的字符集解码字节数组               byte[]→String

代码:

public static void main(String[] args) {

String s = "你好";                                                     编码

byte[] by = s.getBytes("UTF-8");        默认为GBK

System.out.println(Arrays.toString(by));

String ss = new String (by,"UTF-8");                       解码

System.out.println(ss);

}

字符输入流

方法:

int read():一次读取一个字符

int read(char[] chs):一个读取一个字符数组

代码

package cn.idcast3;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

public class Day902 {
	public static void main(String[] args) throws IOException {
		InputStreamReader isr = new InputStreamReader(new FileInputStream(
				"osw.txt"));
		int ch = 0;
		while ((ch = isr.read()) != -1) {
			System.out.print((char) ch);
		}
		isr.close();
	}
}

字符输出流

方法:

public void write(int ch):一次写一个字符

public void write(char[] cbuf,int off,int len):一次写一个字符数组的一部分

package cn.idcast3;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class Day9 {
	public static void main(String[] args) throws IOException {
		OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(
				"c.txt"));
		osw.write("中国");
		osw.close();
	}
}

  字符输入流和字符输出流都可以简写

字符输入流简化为:FileReader

字符输出流简化为:FileWriter

所以代码可以写成

FileReader:

package cn.idcast3;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Day903 {
public static void main(String[] args) throws IOException {
	FileReader fr = new FileReader("a.txt");
	int ch =0;
	while((ch=fr.read())!=-1) {
		System.out.print((char) ch);
	}
	fr.close();
}
}

FileWriter:

package cn.idcast3;

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

public class Day904 {
public static void main(String[] args) throws IOException {
	FileWriter fw = new FileWriter("a.txt");
	fw.write("中国");
	fw.close();
}
}

 高效字符流/字符缓冲流

BufferedReader:高效字符缓冲输入流

BufferedWriter:高效字符缓冲输出流

代码换成

BufferedReader br = new BufferedReader(new FileReader("a.txt"));

其他和InputSteamReader一样,同理 BufferedWriter也是

字符缓冲流的特殊方法

BufferedReader

public String readLine():一次读取一行数据,没有就返回null

BufferedWriter

public void new Line():根据系统决定换行符

flush():刷新缓冲区

close()和flush()的区别:

close():关闭流对象,但是要先刷新,关闭以后流就不能使用了

flush():刷新缓冲区,流对象还能使用

字符缓冲流特殊方法的代码

package cn.idcast3;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Day905 {
public static void main(String[] args) throws IOException {
	BufferedReader br = new BufferedReader(new FileReader("d.txt"));
	BufferedWriter bw = new BufferedWriter(new FileWriter("e.txt"));
	String line = null;
	while((line=br.readLine())!=null) {
		bw.write(line);
		bw.newLine();
		bw.flush();
	}
	br.close();
	bw.close();
}
}

  

时间: 2024-10-17 01:13:13

字符流/转换流的相关文章

Java 字节流 字符流 转换流

我们知道Java中的流分为字符流和字节流,其中字符流主要针对字符文本进行处理,而字节流处理范围更为广泛,毕竟图片.电影等只要是文件都是以二进制的形式存在的,而不是字符. 字符流: FileReader FileWriter. BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream BufferedInputStream BufferedOutputStream 我们看一下J2SE文档: BufferedReader(

【IO流】22 - 字符流 - 转换流OutputStreamWrite和InputStreamReader

转换流 InputStreamReader package cn.itcast.demo; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; /* * 转换流 * java.io.InputStreamReader 继承 Reader * 字符输入流,读取文本文件 * * 字节流向字符的桥梁,将字节流转字符流 * * 读取的方法: * read() 读取1个字

IO流----转换流、缓冲流

打开一个文本文件,另存为: Ansi就是系统默认编码(就是gbk) 建一个编码是utf-8的txt文件, 例: import java.io.FileWriter; import java.io.IOException; public class Demo01 { public static void main(String[] args) throws IOException { //确定目的地 FileWriter fw=new FileWriter("E:\\zyx\\java\\utf-

Java 基础 IO流(转换流,缓冲)

一,前言 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamReader或者OutputStreamWriter,这又是什么意思呢 二,转换流 2.1 OutputStreamWriter类 查阅OutputStreamWriter的API介绍,OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节.它的作用的就是,将字符串按照指

IO异常--缓冲流--转换流--序列化流( IO流2 )

1.IO异常的处理 JDK7前处理:使用try...catch...finally 代码块,处理异常部分 // 声明变量 FileWriter fw = null; try { //创建流对象 fw = new FileWriter("fw.txt"); // 写出数据 fw.write("莫逸风"); //莫逸风 } catch (IOException e) { e.printStackTrace(); } finally { try { if (fw != n

IO流 写入转换流(写入和读取转换流的区别,考虑方向)

package com.yyq; import java.io.*; /* 读取转换流(InputStreamReader) 是字节通向字符的桥梁 * 写入的时候是字节,但是读取的时候是字符,这叫做字节转字符 * 写入转换流(OutputStreamWriter)是字符流通向字节流的桥梁?? * 录入的时候是字符,存储的时候总是字节,这就叫做字符转字节 */ public class OutPutStreamWriterDemo { public static void main(String[

转换流,序列化流

?IO流的分类|- 字节流 |- 字节输入流 InputStream 抽象类 |- FileInputStream 操作文件的字节输入流|- 字节输出流 OuputStream抽象类 |- FileOutputStream 操作文件的字节输出流|- 字符流 |- 字符输入流 Reader抽象类 |- FileReader 用来操作文件的字符输入流(简便的流) |- 字符输出流 Writer抽象类 |- FileWriter 用来操作文件的字符输出流(简便的流) * OutputStreamWri

JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码

一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化. ObjectOutputStream 和 ObjectInputStream 分别与 FileOutputStream 和 FileInputStream 一起使用时,可以为应用程序提供对对象图形的

IO-04字节-字符转换流

掌握OutputStreamWriter和InputStreamReader的作用. 在整个IO包中,实际上就是分为字节流和字符流,但除了这两个流之外,还存在一组字节-字符流转换类. OutputStreamWriter:是Writer的子类,将输出的字符流编程字节流,既:将一个字符流的输出对象变成字节流输出对象. InputStreamReader:是Reader的子类,将输入的字节流变成字符流.既:将一个字节流的输入对象变成字符流的输入对象. 字符流转换成字节流的代码: package li