一、IO流基本概念
1.1、比特(Bit)、字节(Byte)、字符(Char)
-
Bit 位,是计算机最小的二进制单位 ,取0或1,主要用于计算机操作。
-
Byte 字节,是数据的最小单位,由8位bit组成,取值(-128-127),主要用于计算机操作数据。
-
Char 字符,是用户可读写的最小单位,由16位bit(2个byte)组成,取值(0-65535),主要用于用户操数数据。
1.2、IO流的概念
-
它是指数据从源头 流到 目的地,所以常把这种数据流叫做IO流。
-
I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于 处理设备之间的数据传输。如读/写文件,网络通讯等。
-
Java程序中,对于数据的输入/输出操作以“流(stream)” 的 方式进行。
-
java.io包下提供了各种“流”类和接口,用以获取不同种类的 数据,并通过标准的方法输入或输出数据。
-
输入input: 读取外部数据(磁 盘、光盘等存储设备的数据)到 程序(内存)中。
-
输出output: 将程序(内存) 数据输出到磁盘、光盘等存储设 备中。
1.3、流的分类
-
按操作数据单位不同分为: 字节流(8 bit),字符流(16 bit)
-
按数据流的流向不同分为: 输入流,输出流
-
按流的角色的不同分为: 节点流,处理流
1.4、IO 流体系
1、Java的IO流共涉及40多个类,实际上非常规则,都是从如下4个 抽象基类派生的。
2、由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。
IO流继承体系
二、字节流
2.1、Inpustream
InputStream有read方法,一次读取一个字节,OutputStream的write方法一次写一个int。这两个类都是抽象类。意味着不能创建对象,那么需要找到具体的子类来使用。操作流的步骤都是:
第一步:1:实例化File类对象
第二步:2:打开流(即创建流)
第三步:3:通过流读取内容
第四步:4:用完后,关闭流资源
案例一:使用 read()方法,一次读取一个字节,读到文件末尾返回-1.
1 public void testFileInputStream() { 2 // 1、实例化File类对象 3 File file = new File("hello.txt"); 4 // 2、提供具体流 5 FileInputStream fis = null; 6 try { 7 fis = new FileInputStream(file); 8 // 3、数据读取 9 // read():返回读入的一个字符。如果达到文件末尾了,返回-1 10 int data; 11 while ( (data=fis.read()) != -1) { 12 System.out.print((char) data); 13 } 14 15 } catch (IOException e) { 16 e.printStackTrace(); 17 18 } finally { 19 // 4、关闭流 20 if (fis != null) { 21 try { 22 fis.close(); 23 } catch (IOException e) { 24 e.printStackTrace(); 25 } 26 } 27 } 28 }