java IO流的一些概念和分类以及作用

Java Io流的概念

java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作。 注:java把所有的传统的流类型都放到在java io包下,用于实现输入和输出功能。

IO流的分类

  1. 按照流的流向分,可以分为输入流和输出流。 输入流: 只能从中读取数据,而不能向其写入数据。 输出流:只能向其写入数据,而不能向其读取数据。

注:java的输入流主要是InputStream和Reader作为基类,而输出流则是主要由outputStream和Writer作为基类。它们都是一些抽象基类,无法直接创建实例。

  1. 按照操作单元划分,可以划分为字节流和字符流。 字节流和字符流的用法几乎完成全一样,区别在于字节流和字符流所操作的数据单元不同,字节流操作的单元是数据单元是8位的字节,字符流操作的是数据单元为16位的字符。

字节流主要是由InputStream和outPutStream作为基类,而字符流则主要有Reader和Writer作为基类。

  1. 按照流的角色划分为节点流和处理流。 可以从/向一个特定的IO设备(如磁盘,网络)读/写数据的流,称为节点流。节点流也被称为低级流。 处理流则用于对一个已存在的流进行连接和封装,通过封装后的流来实现数据的读/写功能。处理流也被称为高级流。

IO流的应用作用

*一,字节流(以字节为单位读写数据的) 输入流(超类:InputStream) 包括低级流——(FileInputStream) 高级流——(BufferedInputStream) ——(objectInputStream)

输出流(超类:OutputStream) 包括低级流——(FileOutputStream) 高级流——(BufferedOutputStream) ——(objectOutputStream)

二,字符流(已字符为单位读写数据的) 输入流(超类:Reader) 包括低级流——() 高级流——(BufferedReader) ——(InputStreamReader)

输出流(超类:Writer) 包括低级流——() 高级流——(BufferedWriter) ——(OutputStreamWriter) ——(PrintWriter)

InputStreamReader ,OutputStreamWriter(转换流)唯一的一个可以连接在字节流的字符流 不直接操控它们,但在流的连接中起到重要作用,只能连接在字符流 中

FileOutputStream fos=new FileOutputStream(“ows.txt”); OutputStreamWriter ows=new OutputStreamWriter(fos,“想要转换的字符集”); ows.write(“我曾跨过山和大海”); ows.close();

FileInputStream fis=new FileInputStream(“ows.txt”); InputStreamReader isr=new InputStreamReader(fis,“想要转换的字符集”); int d=-1; while((d=isr.read())!=-1){ system.out.print((char)d); } isr.close();

BufferedReader,BufferedWriter(缓冲字符流)可以提高读写效率,还可以按行读写文本数据 PrintWriter——具有自动行刷新的缓冲字符流内部连接BufferedWriter作为其缓冲加速的部分 //写文件数据 PrintWriter pw=new PrintWriter(“pw.txt”,“指定字符集”); pw.println(“摩擦摩擦~”); PrintWriter pw=new PrintWriter(bw,true);//自动行刷新

//读文件数据 FileInputStream fis=new FileInputStream(“ows.txt”); InputStreamReader isr=new InputStreamReader(fis,“想要转换的字符集”); BufferedReader br=new BufferedReader(isr); string line =null; while((line=br.readLine())!=null){ system .out.println(line); } br.close();

经验分享 程序员 微信小程序 职场和发展