栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Connor学Java - Day09

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Connor学Java - Day09

Learn && Live

虚度年华浮萍于世,勤学善思至死不渝

前言

Hey,欢迎阅读Connor学Java系列,这个系列记录了我的Java基础知识学习、复盘过程,欢迎各位大佬阅读斧正!原创不易,转载请注明出处:http://t.csdn.cn/z0svm,话不多说我们马上开始!

1.Java IO分类?

2.Java IO类型图?


字节流介绍

InputStream:abstract,为所有实现子类定义了处理输入流的方法

FileInputStream:文件输入流,用于对文件进行读取操作

PipedInputStream:管道字节输入流,能实现多线程间的管道通信

ByteArrayInputStream:字节数组输入流,将资源文件都以字节的形式存入字节数组中

FilterInputStream:装饰者类,具体的装饰者类继承该类,作用是对节点类进行封装,实现一些特殊功能

BufferedInputStream:缓冲流,内部有一个缓存区,用来存放字节,每次都是将缓存区存满然后发送,而不是逐个字节发送,效率更高

DataInputStream:数据输入流,用来装饰其他流,允许应用程序以机器无关方式从底层输入流中读取基本Java数据类型

ObjectInputStream:对象输入流,直接传输对象,通常应用在反序列化中

OutputStream与InputStream类似,方向相反

字节流方法

字节输入流InputStream主要方法:

(1)read() :从此输入流中读取一个数据字节。

(2)read(byte[] b) :从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。

(3)read(byte[] b, int off, int len) :从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。

(4)close():关闭此输入流并释放与该流关联的所有系统资源。

字节输出流OutputStream主要方法:

(1)write(byte[] b) :将 b.length 个字节从指定 byte 数组写入此文件输出流中。

(2)write(byte[] b, int off, int len) :将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。

(3)write(int b) :将指定字节写入此文件输出流。

(4)close() :关闭此输入流并释放与该流关联的所有系统资源。


字符流介绍

FileReader:用于读取字符文件的便利类,new FileReader(File file)等同于new InputStreamReader(new FileInputStream(file, true),“UTF-8”),但FileReader不能指定字符编码和默认字节缓冲区大小。

PipedReader :管道字符输入流。实现多线程间的管道通信。

CharArrayReader:从Char数组中读取数据的介质流。

InputStreamReader:从字节流到字符流的桥梁(InputStreamReader构造器入参是FileInputStream的实例对象),它读取字节并使用指定的字符集将其解码为字符。它使用的字符集可以通过名称指定,也可以显式给定,或者可以接受平台的默认字符集。

BufferedReader:从字符输入流中读取文本,设置一个缓冲区来提高效率。BufferedReader是对InputStreamReader的封装,前者构造器的入参就是后者的一个实例对象。

Writer与Reader类似,方向相反

字符流方法

字符输入流Reader主要方法:

(1)read():读取单个字符。

(2)read(char[] cbuf) :将字符读入数组。

(3)read(char[] cbuf, int off, int len) : 将字符读入数组的某一部分。

(4)read(CharBuffer target) :试图将字符读入指定的字符缓冲区。

(5)flush() :刷新该流的缓冲。

(6)close() :关闭此流,但要先刷新它。

字符输出流Writer主要方法:

(1)write(char[] cbuf) :写入字符数组。

(2)write(char[] cbuf, int off, int len) :写入字符数组的某一部分。

(3)write(int c) :写入单个字符。

(4)write(String str) :写入字符串。

(5)write(String str, int off, int len) :写入字符串的某一部分。

(6)flush() :刷新该流的缓冲。

(7)close() :关闭此流,但要先刷新它。

(8)BufferedWriter类newLine() :写入一个行分隔符。这个方法会自动适配所在系统的行分隔符。

​ BufferedReader类readLine() :读取一个文本行。

3.字节流和字符流有什么区别?

字节流:按8位传输,以字节为单位输入输出数据

字符流:按16位传输,以字符为单位输入输出数据

4.介绍一下File类?
public class File extends Object implements Serializable, Comparable

File实现了Serializable和Comparable接口,可序列化可排序,用于处理文件,而非文件中的数据

File类的构造器


File类常用方法

5.BIO、NIO、AIO有什么区别?

BIO

同步阻塞,数据的读取写入必须阻塞在一个线程中等待其完成,并发执行能力低

NIO

(1)Non-blocking / New IO,同步非阻塞

(2)提供了Channel、Selector、Buffer等抽象,支持面向缓冲的,基于通道的I/O操作方式

(3)NIO提供了与传统BIO模型中的Socket和ServerSocket相对应的SocketChannel和ServerSocketChannel两种不同的套接字通道实现,两种通道都支持阻塞和非阻塞两种模式。阻塞模式与BIO一样,可用于低负载、低并发的应用程序;非阻塞模式与之相反,可用于高负载、高并发的应用程序

AIO

(1)Asynchronous IO,也叫NIO2,异步非阻塞

(2)基于事件和回调机制,应用操作之后直接返回,当后台处理完成,操作系统会通知相应的线程进行后续的操作

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000115.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号