package io;
import java.io.*;
/**
* 字符流操作
* InputStreamReader:是从字节流到字符流的桥梁
* 他读取字节,并使用指定的编码将其接吗为字符
* 使用的字符集可以由名称指定,也可以被明确指定,或者使用平台默认的字符集
*
* OutputStreamWrite:是从字符流到字节流的桥梁
* 使用指定的编码将写入的字符编码为字节
* 字符集可以由名称指定,也可以被明确指定,或者使用平台默认的字符集
*/
public class IODemo2 {
public static void main(String[] args) {
// writeBase();
// readBase();
// buffwritedBase();
buffreadBase();
}
/**
* 字符读取操作
*/
public static void readBase() {
try {
//字符读取操作 指定字符集
InputStreamReader isr = new InputStreamReader(new FileInputStream("P:\\demo\\aaaaa.txt"), "UTF-8");
//读取一个
int ch;
while ((ch = isr.read()) != -1) {
System.out.print((char) ch);
}
System.out.println("\r\n");
//读取多个
char[] chs = new char[1024];
int len;
while ((len = isr.read(chs)) != -1) {
System.out.print(new String(chs, 0, len));
}
isr.close();
} catch (IOException e) {
System.out.println(e);
}
}
/**
* OutputStreamWriter:
* 字符写入操作
* write : 写入数据(写入的数据暂存在缓冲区)
* flush : 刷新缓冲区(将缓冲区数据写入到文件)
* close : 关闭资源(关闭前刷新缓冲区)
*/
public static void writeBase() {
try {
//字符写入操作 指定字符集
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("P:\\demo\\aaaaa.txt"), "UTF-8");
osw.write("我喜欢编程");//直接写入字符
osw.write("\r\n");//直接写入字符
osw.write("我喜欢Java");//直接写入字符
// osw.close();
osw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 字符缓冲流 写入数据
* newLine:根据当前平台写入自适应的换行符号
*/
public static void buffwritedBase(){
try{
BufferedWriter bw = new BufferedWriter(new FileWriter("P:\\demo\\bbbbbb.txt"));
//写入数据
for (int i = 0; i < 10; i++){
bw.write("Hello"+i);
bw.newLine();//自适应平台的换行符,该方法是字符缓冲流类(BufferedWriter)的特有方法
bw.flush();
}
bw.close();
}catch (IOException e){
System.out.println(e);
}
}
/**
* 字符缓冲流 读取数据
* readLine:每次读取一行内容(不包括换行符),返回 null 表示结束
*/
public static void buffreadBase() {
try{
BufferedReader br = new BufferedReader(new FileReader("P:\\demo\\bbbbbb.txt"));
//读取数据
String str;
while ((str = br.readLine()) != null){
System.out.println(str);
}
br.close();
}catch(IOException e){
}
}
}