-----------android培训、java培训、java学习型技术博客、期待与您交流!-----------
Java的io流
Runtime对象:
该类并没有提供构造函数。
说明不可以new对象。那么会直接想到该类中的方法都是静态的。
发现该类中还有非静态方法。
说明该类肯定提供了方法获取本类对象。而且方法是静态的,并返回值类型是本类类型。
有这个特点可以看出该类使用了单例设计模式完成,保证了对象的唯一性。
该方法是static Runtime getRuntime();
IO(Input Output)流
1.IO流用来处理设备之间的数据传输。
2.Java对数据的操作是通过流的方式。
3.Java用于操作流的对象都在IO包中。
4.流按操作数据分为两种:字符流与字节流。
5.流按流向分为:输入流,输出流。
IO流常用基类
1.字节流的抽象基类:
InoutStream,OutputStream.
字符流和字节流:
字符流两个基类:
InputStream OutputStream
字符流量个基类:
Reader Writer
先学习一下字符流的特点;
既然IO流是用于操作数据的,那么数据的最常见体现形式是:文件。
那么闲一操作文件为主来演示。
需求:在硬盘上,创建一个文件并写入一些文字数据。
找到一个专门用于操作文件的Writer子类对象。FileWriter.后缀名是父类名,前缀名是该流对象的功能。
字符流的缓冲区
1、缓冲区的出现提高了对数据的读写效率。
2、对应类。
(1)、BufferedWrite
(2)、BufferedReader
3、缓冲区要结合流才可以使用。
4、在流的基础上对流的功能进行了增强。
IO流(用字节流通过缓冲区复制文本文件)
/*通过缓冲区复制文件*/
IO流(读取键盘录入)
System.out:对应的是标准输出设备:控制台
System.in:对应的是标准输入设备 :键盘
/*
需求,通过键盘录入数据。
当录入一行数据后,就将改行数据进行打印,如果录入数据是over,那么停止录入
面向对象
流操作的基本规律:最痛苦的就是流对象有很多,不知道该用那一个。
通过明确来完成。
(1)、明确源和目的
源:输入流InputStream Reader
目的:输出流OutputStream Writer
(2)、操作的数据是否是纯文本
是:字符流 Reader Writer
不是:字节流 InputStream OutputStream
(3)、当体系明确后,再明确要使用那个具体的对象
通过设备来进行区分:
源设备:内存 硬盘 键盘
目的设备:内存 硬盘 控制台
/*需求:将一个文本文件中数据存储到另一个文件中。复制文件*/
源:因为是源,所以使用读取流。InputStream Reader
是否是纯文本文件:是,所以使用 Reader。
接下来明确要使用该体系中的那个对象:
明确设备,硬盘,一个文件。
Reader体系中可以操作文件的是,FileReader。
是否需要提高效率?
BufferedReader
目的:因为是目的,所以使用写入流。OutputStream Writer
是否是纯文本文件:是,所以使用 Writer。
接下来明确要使用该体系中的那个对象:
明确目的,硬盘,一个文件。
Writer 体系中可以操作文件的是,FileWriter。
是否需要提高效率?需要。BufferedWriter
/*需求:将键盘录入的数据保存到一个文件中这个需求中有源和目的都存在,那么分别分析*/
源:因为是源,所以使用读取流。InputStream Reader
是否是纯文本文件:是,所以使用 Reader。
接下来明确要使用该体系中的那个对象:
明确设备,键盘。对应的对象是System.in。
不是选择Reader吗?System.in 对应的不是字节流吗?
为了操作键盘的文字数据方便,字节流可以转换成字符流,按照字符串操作最方便。
既然明确了Reader 就将 System.in 转换成Reader
用到了Reader 体系中的转换流,InputSteamReader
需要提高效率吗?需要,BufferedReader
目的:因为是目的,所以使用写入流。OutputStream Writer
是否是纯文本文件:是,所以使用 Writer。
接下来明确要使用该体系中的那个对象:
明确目的,硬盘,一个文件。
Writer 体系中可以操作文件的是,FileWriter。
是否需要提高效率?需要。BufferedWriter
扩展想要把录入的数据按照指定的编码表(UTF-8),将数据存到文件中,使用转换流,里面可以指定编码。
目的:OutputStream Writer
是否是纯文本?是,Writer
接下来明确要使用该体系中的那个对象:
明确目的,硬盘,一个文件。
Writer 体系中可以操作文件的是,FileWriter。
但是存储时,需要加入指定的编码表,而指定的编码表,只有转换流可以指定。
所以要使用的对象是OutputStreamWriter.
而该转换流对象要接收一个字节输出流。
而且还可以操作文件的字节输出流,FileOutputStream
是否需要提高效率?需要。BufferedWriter
所以,记住,转化暖流什么时候使用,字符和字节之间的桥梁,通常,涉及到字符编码转换时,需要用到转换流。
IO流(改变标准输入输出设备)
System
IO流(异常的日志信息)