黑马程序员__IO流小结

 ------- 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"))目的从打印到控制台改变为一个文件。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值