.读取键盘录入.
System.out:对应的是标准输出设备,控制台
System.in:对应的标准输入设备:键盘
InputStream in=System.in;可接收键盘录入
实例:
.读取转换流[字节通过编码表解析为字符]
.InputStreamReader
案例:
以上三句话可以简写为一句话.该语句比System.in牛,一次可录入一行…….
*******************************************************************************
.写入转换流[字符经编码表解析为字节]
.OutputStreamWriter
.案例:
简写:
流操作的基本规律:可通过以下的三个明确来演说
1,明确源和目的
源:输入流 InputStream Reader
目的:输出流OutputStream Writer
2,操作的数据是否是纯文本
是,字符流
不是:字节流
3,当体系明确后,再明确该使用那个具体的对象
通过设备来进行区分:
源设备:内存,硬盘(文件),键盘
目的设备:内存,硬盘(文件),控制台
实际需求
1,将一个文本文件中的数据存储到别一个文件中,复制文件
源,因为是源,所以使用读取流,InputStream Reader
是不是操作文本文件
是,所以,这时选用Reader
这样体系就明确了
接下来明确要使用该体系中的那个对象
明确设备:硬盘,上一个文件
Reader体系中可以操作文件的对象是FileReader
考虑:是否要提高效率,要的话,就用Reader体系中的缓冲区.不需要的话就不考虑
FileReader fr=new FileReader(“a.txt”);
BufferedReader bufr=new BufferedReader(fr);
目的:OutputStream Writer
是否是纯文本
是,所以用Writer
设备:硬盘,一个文件
Writer体系中可以操作文件的对象是FileWriter
考虑:是否要提高效率,要的话,就用Writer体系中的缓冲区.不需要的话就不考虑
FileWriter fw=new FileWriter(“b.txt”);
BufferedWriter bufw=new BufferedWriter(fw);
2,需求:将键盘录入的数据保存到一个文件中
这个需求中有源和目的都存在
那么分别分析
源:InputStream Reader
是不是纯文本?是,那就用Reader
设备:键盘.对应的对象是System.in
因为,选择的是Reader,而设备又是System.in字节流
所以,为了操作键盘的文本数据方便,转成字符流按照字符操作是最方便的
明确了,Reader,那么就将System.in转换成Readr
用了,Reader体系中的转换流,InputStreamReader
InputStreamReader isr=new InputStreamReader(System.in);
目的:OutputStream Writer
是否为纯文本,是.用Writer
设备,硬盘,一个文件.使用FileWriter
FileWriter fw=new FileWritre(“c.txt”);
考虑,需要提高效率吗?需要的话加上
BufferedWriter bufw =new BufferedWriter(fw);
扩展以下,想要把录入的数据按照指定的编码表(utf-8),将数据存到文件中.
目的:OutputStream Writer
是否存入文本,是,用Writer
设备:硬盘,一个文件,使用FileWriter
但是,FileWriter是使用的默认编码表GBK
此时存储,需要自定义的编码表,而指定编码表只有转换流可以制定.
所以,要使用的对象是OutputStreamWriter
而该转换流对象要就收一个字节输出流,而且还可以操作的文件的字节输出流.FileOutputStream
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(“d.txt”),”UTF-8”);
需要高效吗?
BufferedWriter bufw=new BufferedWriter(osw);
要记住了,转换流什么时候用,字符和字节之间的桥梁,通常,设计到字符编码转换时,需要用到转换流
.小扩展:****************
例子,不常用:
Throwable
案例,自定义log文件,,,,,,,(其实开发常用log4j工具来完成)
Log日志第二步分,获取系统日志,并存储到log文件