1.概述
IO流就是输入/输出程序的数据流,通过IO流技术可以实现从程序中读取外部数据或者将数据从程序中输出到外部设备中。
2.java.io
输入流 输出流
字节流 InputStream OutputStream
字符流 Reader Writer
四大基本流都是抽象类,不能直接使用,在他们的基础上,派生出了很多具有具体功能的子孙流。
Reader、Writer:InputStreamReader、OutputStreamWriter
转换流是字节流通向字符流的桥梁,可以将字节流转换为字符流,原理其实就是在字节流的基础上增加了编解码的操作。
FileReader、FileWriter其实底层都是字节流,只不过额外的配置一个编码器、解码器,底层让然用字节读数据通过解码器转换成字符,或通过编码器将字符转换为字节再输出。而FileReader和FileWriter使用的都是系统默认的编码,如果使用它读取写出非系统码的文件,可能会产生乱码的问题。此时可以通过转换流自己构建指定编码的字符输入流或输出流。package com.zll.io;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;
/**
* 利用转换流读取UTF-8的文件
* @author Administrator
*
*/
public class InputStreamReaderDemo1 {
public static void main(String[] args) throws Exception {
// Reader reader = new FileReader("c:\\6.txt");
// char [] cs = new char[1024];
// int i = reader.read(cs);
// String str = new String(cs,0,i);
// System.out.println(str);
Reader reader = new InputStreamReader(new FileInputStream("c:\\6.txt"),"utf-8");
char [] cs = new char[1024];
int i = reader.read(cs);
String str = new String(cs,0,i);
System.out.println(str);
}
}
package com.zll.io;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
/**
* 利用转换流输出UTF-8的数据
*/
public class OutputStreamWriterDemo1 {
public static void main(String[] args) throws Exception {
// Writer writer = new FileWriter("c:\\5.txt");
// writer.write("中国");
// writer.close();
Writer writer = new OutputStreamWriter(new FileOutputStream("c:\\6.txt"), "utf-8");
writer.write("中国");
writer.close();
}
}