
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;
import javax.imageio.stream.FileImageInputStream;
public class Demo {
/*
* PrintStream
* 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。
*
*/
public static void main(String[] args) throws IOException {
//系统的一个打印输出流属性
//PrintStream out = System.out;
//out.println("123");
//out.close();
//键盘输入流 专门给控制台输入数据的
/*Scanner sc = new Scanner(System.in);
System.out.println("请输入一句话");
sc.nextLine();//阻塞式方法
*/ }
}

- OutputStreamWriter 是字符流通向字节流的桥梁:
* 可使用指定的 charset 将要写入流中的字符编码成字节。
* 它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class Demo {
public static void main(String[] args) throws IOException {
//1:创建字符输出流 (转换流 表面上是字符流,实际到底层的时候就是字节流) 默认字符集 GBK
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("a.txt"));
//2:写数据
//2.1 一次写入一个字符串
osw.write("你好吗");
osw.write("\r\n");
osw.write("很好");
//2.2 一次写入一个字符
osw.write('谭');
osw.write(35885);
//2.3 一次写入一个字符数组
osw.write(new char[]{12345,45678,65535,'中','国'});
//3:关闭流
osw.close();
}
}
- OutputStreamWriter 是字符流通向字节流的桥梁:
* 可使用指定的 charset 将要写入流中的字符编码成字节。
* 它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class Demo2 {
public static void main(String[] args) throws IOException {
//1:创建字符输出流 (最外层是字符流 中间是缓冲流 里层是字节流)
OutputStreamWriter osw = new OutputStreamWriter(
new BufferedOutputStream(new FileOutputStream("a.txt")), "utf-8");
//2:写数据
osw.write("你好吗");
//3:关闭流
osw.close();
}
}
- InputStreamReader
* InputStreamReader 是字节流通向字符流的桥梁:
* 它使用指定的 charset 读取字节并将其解码为字符。
* 它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
*
* 注意:读写数据,字符集保持一致
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Demo {
public static void main(String[] args) throws IOException {
// 创建字符输出流 把字符转为字节 (把看得懂变为看不懂 编码)
/* OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("a.txt"), "utf-8");
osw.write("你好吗");
osw.close();*/
//1 创建字符输入流 把字节转为字符 (把看不懂变为看的懂 解码)
InputStreamReader isr = new InputStreamReader(new FileInputStream("斗破苍穹.txt"));
//2 读取字符
//2.1 一次读取一个字符
int num = 0;
while((num = isr.read())!=-1){
System.out.print((char)num);
}
//2.2一次读取一个字符数组
/* char[] ch = new char[1024];
int num = 0;
while((num = isr.read(ch))!=-1){
System.out.print(new String(ch,0,num));
}*/
//3 关闭流
isr.close();
}
}