一 编码表
二 转换流(把字节流转换为字符流)
字符流=字节流+编码表
OutputStreamWriter
字符输出流
public
OutputStreamWriter
(
OutputStream
out):根据默认编码把字节流的数据转换为字符流
public
OutputStreamWriter
(
OutputStream
out,String
charsetName
)根据指定编码把字节流数据转换为字符流
InputStreamReader
字符输入流
public
InputStreamReader
(
InputStream
in) 用默认的编码读取数据
public
InputStreamReader
(
InputStream
in,String
charsetName
)用指定的编码读取数据
package io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; /** *public OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流 *public OutputStreamWriter(OutputStream out,String charsetName)根据指定编码把字节流数据转换为字符流 * *public InputStreamReader(InputStream in) 用默认的编码读取数据 *public InputStreamReader(InputStream in,String charsetName)用指定的编码读取数据 */ public class IoDemo10 { public static void main(String[] args) throws IOException { // System.out.println("写数据——————————————————————————————————"); //创建对象默认字符 // OutputStreamWriter osw = new OutputStreamWriter( new FileOutputStream("a.txt")); //创建对象指定字符集 // OutputStreamWriter osw = new OutputStreamWriter( new FileOutputStream("a.txt"),"UTF-8"); //写数据 // osw.write("中国"); System.out.println("读取数据——————————————————————————————————"); //创建对象默认字符 InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"),"utf-8"); int by = 0; while((by=isr.read())!=-1){ System.out.print((char)by); } //释放资源 // osw.close(); isr.close(); } }注意:保证写数据和写数据的编码一致
OutputStreamWriter字符转换流
写数据的5种方法
public void write(
int
c) 写一个字符
public void write(char[]
cbuf
) 写一个字符数组
public void write(char[]
cbuf,int
off,int
len
) 写一个字符数组一部分
public void write(String
str
)写一个字符串
public void write(String
str,int
off,int
len
)写一个字符串的一部分
OutputStreamWriter字符转换流
读数据的2种方法
public
int
read()
public
int
read(char[]
cbuf
)
转换流
提供了对应的子类
FileWriter
FileReader
三 高效流
字符流为了高效读写,也提供了对应的字符缓冲流
BufferedWriter 字符缓冲输出流
BufferedReader 字符缓冲输入流
package Stream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /** * 字符流为了高效读写,也提供了对应的字符缓冲流 BufferedWriter 字符缓冲输出流 BufferedReader 字符缓冲输入流 */ public class TestDemo02 { public static void main(String[] args) throws IOException { /*//创建字符缓冲输出流 BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt")); //写数据 bw.write("hello"); bw.write("world"); bw.write("java"); //释放资源 bw.close();*/ //创建字符缓冲输入流 BufferedReader br = new BufferedReader(new FileReader("bw.txt")); //读数据 char[] ch = new char[1024]; int len = 0; while((len=br.read(ch))!=-1){ System.out.print(new String(ch,0,len)); } //释放资源 br.close(); } }
字符缓冲流的特殊功能
字节缓冲流的特殊方法
BufferedWriter
public void newLine() 根据系统来决定换行符
BufferedReader
public String readLine() 一次读取一行数据
package Stream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; /** * 字节缓冲流的特殊方法 * BufferedWriter * public void newLine() 根据系统来决定换行符 * BufferedReader * public String readLine() 一次读取一行数据 */ public class TestDemo09 { public static void main(String[] args) throws IOException { Writer(); Reader(); } public static void Reader() throws IOException { BufferedReader br = new BufferedReader(new FileReader("zxx.txt")); String line = null; while((line= br.readLine())!=null){ System.out.println(line); } br.close(); } public static void Writer() throws IOException { BufferedWriter bw = new BufferedWriter(new FileWriter("zxx.txt")); for(int i =0;i<=10;i++){ bw.write("hello"+i); bw.newLine(); } bw.close(); } }