黑马程序员--io流

------- android培训、 java培训、期待与您交流! ----------1、io流:用于处理设备上的数据(设备:硬盘,内存,键盘录入)2、io分类:一,根据处理数据类型的不同:字节流和字符流。二,根据流向不同:输入流和输出流。3、字符流的由来: 字符流的由来: 因为文件编码的不同,而有了对字符进行高效操作流象。原理:其实就是基于字节流,去查了指定的码表。4、字节流和字符流的区别: 一 ,字节流读取的时候,读到一个字节就返回一个字节。字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8 码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。二 ,字节流可以处理所有类型数据,如图片,mp3,avi。而字符流只能处理字符数据。 结论:只要是处理纯文本数据,就要优先考虑使用字符流。除此之外都用字节流。5、IO的体系。所具备的基本功能就有两个读和写。 一 ,字节流 InputStream(读),OutputStream(写)。 二,字符流: Reader(读),Writer(写)。6、Reader中的常见的方法: 1 ,int read(): 读取一个字符。返回的是读到的那个字符。如果读到流的末尾,返回 -1. 2 ,int read(char[]): 将读到的字符存入指定的数组中,返回的是读到的字符个数,也就是往数组里装的元素的个数。如果读到流的末尾,返回 -1. 3 ,close(): 读取字符其实用的是 window 系统的功能,就希望使用完毕后,进行资源的释放。 Writer 中的常见的方法: 1 ,write(ch): 将一个字符写入到流中。 2 ,write(char[]): 将一个字符数组写入到流中。 3 ,write(String): 将一个字符串写入到流中。 4 ,flush():刷新流,将流中的数据刷新到目的地中,流还存在。 5 ,close():关闭资源:在关闭前会先调用 flush(),刷新流中的数据去目的地。然流 关闭。 7、FileWriter: 该类没有特有的方法。只有自己的构造函数。 该类特点在于, 1 ,用于处理文本文件。 2 ,该类中有默认的编码表, 3 ,该类中有临时缓冲。 构造函数:在写入流对象初始化时,必须要有一个存储数据的目的地。 FileWriter(String filename): 该构造函数做了什么事情呢? 1 ,调用系统资源。 2 ,在指定位置,创建一个文件。 注意:如果该文件已存在,将会被覆盖。 FileWriter(String filename,boolean append): 该构造函数:当传入的boolean类型值为true 时,会在指定文件末尾处进行数据的续写。 8、FileReader: 1 ,用于读取文本文件的流对象。 2 ,用于关联文本文件。 构造函数:在读取流对象初始化的时候,必须要指定一个被读取的文件。 如果该文件不存在会发生 FileNotFoundException. FileReader(String filename); 9、字符流的缓冲区: 缓冲区的出现提高了对流的操作效率。 原理:其实就是将数组进行封装。 对应的对象: BufferedWriter: 特有方法: newLine():跨平台的换行符。 BufferedReader: 特有方法: readLine():一次读一行,到行标记时,将行标记之前的字符数据作为字符串返 回。当读到末尾时,返回null。 10、目前学习的流对象: 字符流: FileReader. FileWriter. BufferedReader BufferedWriter. 字节流: FileInputStream FileOutputStream BufferedInputStream BufferedOutputStream 字节流的read() 方法读取一个字节。为什么返回的不是byte 类型,而是int类型呢? 因为read方法读到末尾时返回的是 -1. 而在所操作的数据中的很容易出现连续多个1的情况,而连续读到8个1,就是-1. 导致读取会提前停止。 所以将读到的一个字节给提升为一个int类型的数值,但是只保留原字节,并在剩余二进制位补0. 具体操作是:byte&255 or byte&0xff 对于write方法,可以一次写入一个字节,但接收的是一个 int 类型数值。 只写入该int类型的数值的最低一个字节(8 位)。 简单说:read方法对读到的数据进行提升。write对操作的数据进行转换。11、IO 包中的其他对象:打印流。 PrintStream: 是一个字节打印流,System.out 对应的类型就是 PrintStream。 它的构造函数可以接收三种数据类型的值。字符串路径。 File对象。 OutputStream。 PrintWriter: 是一个字符打印流。构造函数可以接收四种类型的值。字符串路径。 File 对象。 对于1,2类型的数据,还可以指定编码表。也就是字符集。 OutputStream ,Writer 对于3,4类型的数据,可以指定自动刷新。 注意:该自动刷新值为true时,只有三个方法可以用:println,printf,format. 管道流。 PipedInputStream PipedOutputStream 特点: 读取管道流和写入管道流可以进行连接。 连接方式:通过两个流对象的构造函数。 通过两个对象的connect方法。    ------- android培训、 java培训、期待与您交流! ----------

你可能感兴趣的:(黑马程序员--io流)