Java 中IO流详解(附实例代码/面试题)


前言

IO流大家可能不太熟悉,我简单整理了一下常用IO流基本用法,并且提供了一些练习题和面试题,大家可以抽空看看。

一、I/O流是什么?

I/O流中的 I 代表 input(输入) ,O代表 output(输出) 。

流的定义: IO流就是以流的方式进行输入输出。流(stream)的概念源于UNIX中管道(pipe)的概念。

如何理解?
形象的比喻——水流 ,文件======程序 ,文件和程序之间连接一个管道,水流就在之间形成了,自然也就出现了方向:可以流进,也可以流出.便于理解,这么定义流: 流就是一个管道里面有流水,这个管道连接了文件和程序。

  • 按流向分:

             输出流:OutputStream 和 Writer 为基类
             输入流:InputStream 和 Reader 为基类
    
  • 按处理数据单元划分:字节流字节输入流:InputStream基类

              1.  字节输出流:OutputStream基类
                               
              2. 字符流:字符输入流:Reader基类
                               
              3. 字节输出流:Writer基类
    

注意:(字节流是 8 位通用字节流,字符流是16位Unicode字符流)

二、IO流分类:

1. 流程图: io流对象

在这里插入图片描述

2. io流的优缺点:

  1. 简明与可读性
  2. 类型安全(type safe)
  3. 易于扩充

3. io 流Java中用途有哪些?

  1. io 流很有用的,遇到大型一点的程序都会涉及到。自动生成java代码时会用到 io 输出。

  2. 上传图片,文件,还有就是存取文件,socket通信,最初可以不用太专研 io,当用的时候去看看就行了,主要就是区分字节字符输入输出流的用法就行了。

  3. 如果做文档,报表或者文件的上传下载,读取、写入之类的项目,用的还是比较多的。

三、一些 io 实例

  1. BufferedInputStream:缓冲流,对处理流进行装饰、增强,内部会有一个缓冲区,用来存放字节,每次都是将缓冲区存满然后发送,而不是一个字节或两个字节这样发送,效率更高。
  2. DataInputStream:数据输入流,用来装饰其他输入流,它允许通过数据流来读写Java基本类型。
  3. FileInputStream:文件输入流,通常用于对文件进行读取操作。
  4. File:对指定目录的文件进行操作。

代码如下(示例1):

  1. 分别创建 aa.txt文本(当前项目根目录,d盘根目录创建aa.txt , d盘创建aa文件夹, d盘创建cc/dd目录
public class FileRead {
   
   
    public static void main(String[] args) {
   
   
    // 实例化对象
        File f1 = new File("aa.txt");
        File f2 = new File("D:/aa.txt");
        File f3 = new File("d:/aa");
        File f4 = new File("d:/cc/dd");

        try {
   
   
            boolean b1 = f1.createNewFile(); // 创建文件
            boolean b2 = f2.createNewFile(); // 创建文件
            boolean b3 = f3.mkdir(); //单个文件夹
            boolean
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值