IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java----IO -> 正文阅读

[Java知识库]java----IO

1.流介绍

1.1流概念

流的本质是数据传输,是数据集合具有方向性的数据传输
作用:在数据源和程序之间建立的数据通道

1.2 流的划分

1.2.1流方向

输入流,输出流

1.2.2 流单位

字节流,字符流

1.2.3功能划分

节点流
过滤流(高级流):对已有节点流进行封装

1.3流基类

字节流和字符流区别:
字节流数据是以字节为数据单元,byte[]
字符流数据是以字符为数据单元,char[]

读方法:int read(),read(byte[] bytes)/read(byte[] byte,int off,int len)
写方法:void write(int n), write(byte[] b),write(byte[] bytes, int off, int len)

字符流:

  • 输入流:Reader
  • 输出流:Writer

字符流:

  • 输入流:InputStream
  • 输出流:OutputStream

2.File类

2.1 作用

不是操作文件内容,而是操作文件或文件夹等

2.2 路径

  • 相对路径:不带盘符的路径,“ . ”表示当前路径。“…”表示父路径
  • 绝对路径:带有盘符(windows:D \ C:\)

2.3 方法

创建和删除
文件获取

3.具体流

  1. 文件操作字节流:FileInputStream/FileOutputStream
  2. 文件操作字符流:FileReader/FileWriter
  3. 缓冲流:BufferInputStream/BufferOutputStream
  4. 转换流:InputStreamReader/OutputStreamWriter
  5. 对象流:ObjectInputStream/ObjectOutputStream

4.序列化

概念

  1. 将对象实例保存到磁盘的过程就是序列化
  2. 反序列化是将磁盘中的数据解析为对象实例的过程
  3. seriaVersionUID:序列化的版本号,由类名、方法名和属性等生成64位哈希值
  4. transient关键字:用来控制属性等不参与序列化的过程

5. RandomAccessFile类

5.1 概念

随机访问类:对文件内容的访问可以随机进行读取和写入,即该类既可以读数据也可以写数据

5.2 构造实例

构造函数中第二个参数指定访问模式,有4种模式

  • r:以只读的模式打开,如果调用write方法将会抛出IO异常
  • rw:以读和写的模式打开
  • rws:以读和写的模式打开,要求对”文件的内容“和”元数据“的每个更新都同步到存储设备
  • rwd:以读和写的模式打开,要求对”文件的内容“的每个更新都同步到存储设备

5.3特殊方法

long getFilePointer() // 返回文件记录中指针的当前位置
void seek(long pos) // 将文件记录移动到指定的pos文件

6.IO设计模式

6.1 装饰器

装饰器的UML图:
在这里插入图片描述

6.1.1 概念

装饰器是在不必修改原有类和不使用继承的方式,动态的扩展新的功能

6.1.2装饰器角色

  • Component:为统一接口,也是装饰类和被装饰类的基本类型
  • ConcreteComponent:为具体实现类,也是被装饰类,他本身是个具有一些功能的完整的类
  • Decorator:是装饰类,实现了Component接口的同时还在内部维护了一个ConcreteComponent的实例,并可以通过构造函数初始化。而Decorator本身,通常采用默认实现,他的存在仅仅是一个声明:我要生产出一些用于装饰的子类了。而其子类才是赋有具体装饰效果的装饰产品类。
  • ConcreteDecorator:是具体的装饰产品类,每一种装饰产品都具有特定的装饰效果。可以通过构造器声明装饰哪种类型的ConcreteComponent,从而对其进行装饰。

6.1.3 IO流中装饰器使用

在这里插入图片描述

InputStream是被装饰类和装饰类的基本类型,这里是通过抽象类的形式提供的,相当于Component接口FileInputStream是具体的被装饰类,是继承自InputStream,提供了完备的InputStream方法的实现。相当于是concreateComponent类FilterInputStream是装饰器类,其继承InpuStream,内部维护了一个Inpustream实现类,相当于Decorator类BufferInputstream是具体的装饰器类,继承自FilterInputStream装饰器类,提供了具有特有的缓冲功能的特点

6.2 适配器

在这里插入图片描述

6.1.1 概念

将一个不兼容的接口适配成期望的接口,以方便使用

6.1.2 适配器角色

Target(目标接口):所要转换的所期待的接口
Adaptee(源角色):需要适配的类
Adapter(适配器):将源角色适配成目标接口,一般持有源接口的引用(或者继承源接口),且实现目标接口。
Client(客户类):通过目标角色获取服务

6.1.3 IO流中适配器的使用

适配器角色就是InputStreamReader,
被适配的角色是InputStream类的实例对象,目标接口是Reader类。
可以看到,InputStreamReader实现了Reader接口,并且持有了InputStream的引用,这里是通过StreamDecoder类间接持有的,因为从byte到char 要经过编码。
适配器在IO中的体现:将InputStream实现类通过InputStreamReader装换类适配成Reader接口实现类,将OutputStream基类实现类通过OutputStreamWriter适配成Writer基类的实现类

7. JAVA8新特性

7.1 lambda表达式

1、一个lambda表达式的可以有零个或者多个参数
2、参数的类型可以明确声明,也可以根据上下文进行推断
3、所有的参数都是在圆括号中,(int a)和(a) 表达的含义是一样的
4、参数可以为空 例:()->{}
5、lambda表达式的主体可以包含零条或者多条语句,只有一条语句时,可以省略{}号,如果 有多条语句需要加上{}

7.2 stream流(流操作方法)

7.2.1 创建流方法

7.2.2 操作流方法

7.2.3 终止流方法

今天也要好好学习呀~

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:25:07  更:2021-08-22 13:26:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 1:24:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码