------- android培训、java培训、期待与您交流! ----------
system类中有一个in字段
InputStream in=System.in;//这个是一个类字段,不能被实例化。也就是//创建一个标准输入流对象,对应键盘这个输入设备,而且是字节流。
int by=in.read();//read方法是一个阻塞至方法。控制台将会等待客户输入。
通过键盘录入数据,当录入一行数据,就将该行数据进行打印。
InputStream in=System.in;//
这里有个问题没搞清楚,read()读取的是字节,而录入的是一个字符,一个字符是两个字节,内部自动转换了吗?
readLine是字符流BufferedReader中的方法。
InputStreamReader是字节流通向字符流的桥梁
InputStream in=System.in;//创建一个键盘录入流,属于字节流
InputStreamReader isr=new InputStreamReader(in);//
//将字节流转换成为一个字符流对象。
BufferedReader bur= new BufferedReader(isr);//
//将字符流进行包装缓冲。
OutputStreamWriter 字符转换成字节的流.熟悉的文字变成字节存入硬盘中就叫做字符流转成字节流。
键盘录入常用写法:
BufferedReader bufr=
new BufferedReader(new InputSreamReader(System.in));
注意虽然是从键盘去写,但是实际上是先将敲进去的字符读取,是一个读的过程,而不是写,不要搞混了。打印在控制台上,那才是写的动作。
流操作的基本规律,
通过两个明确来完成。
1.明确源和目的。
源是输入流。InputSream Reader
目的是输出流。OutputStream Writer
2.明确操作的数据是否是纯文本。
是:字符流
不是:字节流
例子
1将一个文本文件中的数据存储到另一个文件中,复制文件。
分析:
源:因为是源,所有使用读取流。InputStream Reader.
是不是操作文本文件。
是:这时候用Reader.
这样体系就明确了.
接下来明确要是用该体系中哪个对象 是FileReader
是否要提高效率: 是:加入Reader体系的缓冲区 BufferedReader.
目的:OutputStream Writer
是否是纯文本。
是:Writer
设备:硬盘,一个文件.
Writer体系中可以操作文件的对象是FileWriter.
是否要提高效率: 是:加入Writer体系的缓冲区 BufferedWriter.
记住,如果是想要读取键盘录入的字节,就不需要转换成字符流,
想要把录入的数据按照指定的编码表将数据存到文件中。键盘录入中文时有两张码表识别,UTF-8以及GBK,平台默认编码为GBK时又想用UTF-8时,我们可以用转换流,因为只有转换流才可以指定,OutputStreamWriter就是这样一个流对象.
OutputStreamWriter osw=new OutputStreamWriter(一个字节流,指定码表)其中,指定码表名字就行,比如说"UTF-8"或者是"GBK",记住一点:参数中的流类对象还是一个字节流,所以这个字节转字符的含义其实是,给一个字节流指定码表之后,再使用此转换流就能实现使用指定的码表存储数据的字符流。
System.setIn(new FileInputStream("abc.txt"))将这个System的输入流System.in从键盘录入改变为一个文件对象。
Sysetm.setOut(new printStream("abc.txxt"))目的从打印到控制台改变为一个文件。

535

被折叠的 条评论
为什么被折叠?



