Java基础读书笔记(九)——输入流、输出流

本文详细介绍了Java中的输入/输出流,包括流的概念、字节流(标准输入/输出流、文件输入/输出流、数据字节流、对象字节流及缓冲字节流)和字符流(字符输入/输出流抽象类、文件字符输入/输出流类及字符缓冲流)。阐述了各类流的基本概念、常用方法和实例,是学习Java I/O流的基础知识。
摘要由CSDN通过智能技术生成

1.流的概念

计算机中的流其实是一种信息转换。它是一种有序流,因此相对于某一对象,通常把对象接受外界的信息输入(input)称为输入流,相应地从对象向外输出(Output)的信息称为输出流,合称为输入/输出流(I/O Streams)。对象间进行信息或者数据的交换时,总是先将对象或数据转换为某种形式的流,再通过流的传输到达目的对象后将流转换为对象数据。所以,可以把流看做是一种数据的载体,通过它可以实现数据交换和传输。

在Java中,流仍是一个类的对象,很多文件的输入/输出操作都以此类的成员方法的方式来提供。

- Java的输入/输出流概述

Java流中分为两种,一种是字节流,另一种是字符流,每种流又分为输入和输出两种,并分别由四个抽象类来表示:InputStream、OutputStream、Reader、Writer。

(1)字节流:从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。

(2)字符流:从Reader和Write派生出的一系列类,这类流以16位Unicode码表示的字符为基本处理单位。

在这四个抽象类中,一些最基本的方法:

1)read()方法:当输入流被打开后,可以从里面读取信息。此方法可以从输入流中分离出一个或多个字节,如果字节没有准备好,则read命令将处于等待状态,直到字节流变为有效,即称为同步访问。在InputStream中的read()方法是个抽象方法,Java允许在InputStream流和Reader流的子类中重构read()方法。

2)write()方法:当输入流被打开后,可以使用write()方法向流中写入数据。Java允许在OutputStream流和Write流的子类中重构write()方法。

3)flush()方法:清空输入流。也就是强制把进程缓存中的数据提交给操作系统。并输出所有被缓存的字节。该方法将把缓存中所有内容强制输出到流中。

4)close()方法:对流操作完毕后,必须要将流对象关闭,此时流对象执行close()方法。close()方法不仅关闭输出流,而且释放与此流有关的所有系统资源。[关闭后的写操作会产生IOException异常。当停止I/O操作时,Java不会自动地清空(flush)和关闭数据流。因此,在I/O操作后,立即关不每一个数据流]

5)I/O中的异常:进行I/O操作时可能会产生I/O异常,这属于非运行时异常,应该在程序中处理。


2. 字节输入/输出流类

- Java的标准输入/输出流
  public static final InputStream in;
  public static final PrintStream out;

标准输入流System.in通常对应于键盘输入或者由主机环境(或用户)指定的另一个输入源;标准输出流System.out对应于显示器输出或由主机环境(或用户)指定的另一个输出目标。

实例:

public class Test1 {
    public static void main(String[] args) throws IOException {
        char a;
        System.out.println("Please input a char");
        a = (char)System.in.read();
        System.out.println("The char is:  " + a);
    }

}

运行结果:
这里写图片描述

- 文件输入/输出流类:
1. FileInputStream类

FileInputStream类创建一个能从文件读取字节的InputStream,常用的构造方法:

1)FileInputStream(File fileobj):
通过打开一个到实际文件的连接来创建一个FileInputStream,该文件为文件系统的File对象fileobj。
2)FileInputStream(String path):
通过打开一个到实际文件的连接来创建一个FileInputStream,该文件的完整路径名为path。
2. FileOutputStream类

FileOutputStream类创建一个可以向文件写入字节的类OutputStreamÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值