.读取键盘录入.

System.out:对应的是标准输出设备,控制台

System.in:对应的标准输入设备:键盘

java 获取HWND并且触发键盘事件 java从键盘读取_java 获取HWND并且触发键盘事件

 

java 获取HWND并且触发键盘事件 java从键盘读取_编码_02

 

InputStream in=System.in;可接收键盘录入

实例:

java 获取HWND并且触发键盘事件 java从键盘读取_java_03

 

 

 

.读取转换流[字节通过编码表解析为字符]

.InputStreamReader

java 获取HWND并且触发键盘事件 java从键盘读取_编码_04

java 获取HWND并且触发键盘事件 java从键盘读取_java_05

 

案例:

java 获取HWND并且触发键盘事件 java从键盘读取_io流_06

 

java 获取HWND并且触发键盘事件 java从键盘读取_java 获取HWND并且触发键盘事件_07

 

以上三句话可以简写为一句话.该语句比System.in牛,一次可录入一行…….

java 获取HWND并且触发键盘事件 java从键盘读取_io流_08

 

 

 

*******************************************************************************

.写入转换流[字符经编码表解析为字节]

.OutputStreamWriter

java 获取HWND并且触发键盘事件 java从键盘读取_控制台_09

 

java 获取HWND并且触发键盘事件 java从键盘读取_java 获取HWND并且触发键盘事件_10

 

 

.案例:

java 获取HWND并且触发键盘事件 java从键盘读取_编码_11

 

 

 

简写:

 

java 获取HWND并且触发键盘事件 java从键盘读取_控制台_12

 

 

流操作的基本规律:可通过以下的三个明确来演说

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);

要记住了,转换流什么时候用,字符和字节之间的桥梁,通常,设计到字符编码转换时,需要用到转换流

 

.小扩展:****************

java 获取HWND并且触发键盘事件 java从键盘读取_java_13

 

例子,不常用:

java 获取HWND并且触发键盘事件 java从键盘读取_控制台_14

 

 

 

 

 

Throwable 

java 获取HWND并且触发键盘事件 java从键盘读取_java_15

 

案例,自定义log文件,,,,,,,(其实开发常用log4j工具来完成)

java 获取HWND并且触发键盘事件 java从键盘读取_io流_16

 

 

 

 

Log日志第二步分,获取系统日志,并存储到log文件

java 获取HWND并且触发键盘事件 java从键盘读取_java 获取HWND并且触发键盘事件_17