前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >那些你学了又忘的Java IO(一):总览

那些你学了又忘的Java IO(一):总览

作者头像
闲宇非鱼
发布2022-02-08 11:42:28
2920
发布2022-02-08 11:42:28
举报

一、概要

  在日常开发过程中,相比Java集合、线程以及并发相关的热门类库,Java I/O的使用频率应该是相对较少的,尤其是在没有文件操作类需求的情况下。毕竟能够用集合来处理数据,何必要通过输入/输出流的方式进行处理呢?

  由于使用的频率确实略低且JDK自带的IO类库又相当的繁复,使用起来不像集合或者并发类库那么容易,导致学了忘,忘了学,根本停不下来。但对于任何一种语言来说,IO类库必定是其重要的组成部分之一,所以我们单独开一个系列来对Java I/O做一个整理,也可以说是做一个速记笔记,方便后续使用时进行查阅。

二、从基本概念开始

1. 什么是Java I/O

  Java I/O是jdk提供的用于进行数据资源读取和写入的一组API(注意,本系列当中涉及到的所有类都可以在 java.io 包中当中找到)。其中,根据类型不同可以将数据资源分为一下几类:

  • 字节/字符数组(内存缓冲区)
  • 文件
  • 管道
  • 网络资源
  • 系统输入/输出(来自外设的输入/输出)

  为了对上述数据资源进行读取和写入,Java I/O提出了 的概念,通过I/O流来和对应的数据资源进行交互。

  对于Java小白来说,初次接触流这样一个概念还是略有点难理解的,这里我们可以对照日常生活中的水流来进行理解。在我们观察水流时会发现这样两个特性:

  • 方向性 :水流必定是从一个方向流入另一个方向,不可能存在同时有两个方向的水流;
  • 载物性 :水流当中会承载着树叶、鱼虾等事物;

  同样的I/O流同样存在着这两种特性,但略有不同。

  在方向性方面,I/O流的一端必定连接着需要读取或者写入的数据资源。通过 InputOutput ,Java I/O指明了I/O流的流向:

  • Input :对于Input而言,数据资源为来源,程序或目标空间为输出,此时数据流向决定了当前操作为读数据操作;
  • Output :对Output而言,程序或者其他数据资源为来源,目标数据资源为输出,此时数据流向决定了当前操作为写数据操作;

  在载物性方面,I/O流承载的是字符或者是字节数据。根据I/O流承载的数据以及数据资源的类型不同,Java I/O提供如下的对象进行处理:

2. 网络资源和本地资源的区别

  其实从上面关于数据资源的分类当中我们可以看到,除了网络资源以外,其余所有的数据资源都可以归类到本地资源当中。

  对于本地资源、Java I/O可以使用系统调用来完成对应资源的访问操作,但是对于网络资源来说,处理上会更加复杂。针对网络资源,I/O流需要通过网络通信来访问远程的数据资源。由于网络存在不确定性以及网络协议的不同,针对不同的场景又衍生出和访问本地资源完全不同的I/O模型,在后续的章节中我们会具体讨论这些I/O模型。

三、总结

  本章节主要是给初次接触Java I/O或者反复学反复忘的同学进行一个概括性的介绍,其中着重点出了Java I/O当中较为重要的 的概念,下一章将会对数据资源作进一步的介绍。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Brucebat的伪技术鱼塘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概要
  • 二、从基本概念开始
    • 1. 什么是Java I/O
      • 2. 网络资源和本地资源的区别
      • 三、总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档