前言
一、常用字符流的分类
二、字节输出输入流
1.OutputStreamWriter
代码示例:
public class 字符流之OutputStreamWriter {
//OutputStreamWriter 是字符流通向字节流的桥梁:
//可使用指定的 charset
//将要写入流中的字符编码成字节。
public static void main(String[] args) throws IOException {
//1.构造方法 OutputStreamWriter(OutputStream out)
//创建使用默认字符编码的 OutputStreamWriter。
OutputStreamWriter outputStr = new OutputStreamWriter(new FileOutputStream("e.txt"));
//写入数据
//1.write(int c)
// 写入单个字符。
outputStr.write('我');
outputStr.write('是');
outputStr.write('小');
outputStr.write('猪');
outputStr.flush();
//2.write(String str, int off, int len)
// 写入字符串的某一部分。
outputStr.write("你是小驴");
String str="小驴爱小猪才怪";
outputStr.write(str,0,5);
outputStr.flush();
outputStr.close();//关闭包含刷新和关闭
//指定码表:编解码要使用统一码表
//OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("f.txt"), "UTF-8");
//writer.write("小猪爱小驴");
//writer.close();
}
}
1.InputStreamReader
代码示例:
public class 字符流之InputStreamReader {
public static void main(String[] args) throws IOException {
//1.构造方法 InputStreamReader(InputStream in)
// 创建一个使用默认字符集的 InputStreamReader。
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream("e.txt"));
//读取字符,返回-1代表读取完毕。
//1.read()——读取单个字符。
int ch = inputStreamReader.read();
System.out.println((char)ch);
//2.read(char[] cbuf, int offset, int length)_将字符读入数组中的某一部分。
char[] chars = new char[100];
int len = inputStreamReader.read(chars,0,5);//一次读取多个字符,填充到缓冲区
//两种字符数组转化为字符串的方法,掌握
String str=new String(chars,0,len);
System.out.println(str);
System.out.println(String.valueOf(chars));
}
}
3.复制小练习
使用字符流进行文本文件的复制:
public class 使用字符流复制文件 {
public static void main(String[] args) throws IOException {
File file = new File("小悬悬爱Java.txt");
FileInputStream fileInputStream = new FileInputStream(file);
//1.封装源文本文件
InputStreamReader in = new InputStreamReader(fileInputStream);
//2.封装目标文件
File file1 = new File("C:\\Users\\46188\\Desktop\\", file.getName());
FileOutputStream fileOutputStream = new FileOutputStream(file1);
OutputStreamWriter out = new OutputStreamWriter(fileOutputStream,"GBK");
//3.复制
while (true){
char[] chars = new char[100];
int len = in.read(chars);
if (len == -1) {
break;
}
out.write(chars, 0, len);
out.flush();
}
in.close();
out.close();
}
}
//while (true){
// int ch=in.read();
// if(ch==-1){
// break;
// }
// out.write(ch);
//}