每年桃花开的时候,我就会想起IO流,她曾经很难为我....

阅读: 评论:0

每年桃花开的时候,我就会想起IO流,她曾经很难为我....

每年桃花开的时候,我就会想起IO流,她曾经很难为我....

目录

前言:

一、IO流:

二、字节流:

1、字节输入流:

FIleInputStream:

BufferedInputStream:

2、字节输出流: 

FileOutputStream:

BufferedOutputStream:

三、字符流: 

1、字符输入流: 

InputStreamReader:

BufferedReader:

2、字符输出流:

OutputStreamWriter: 

小问题:


前言:

大家吼啊!今天给大家带来秋天的第一篇博客。

不知道是不是个人原因,感觉一开始看这个IO流视频就感觉有点难,然后导图整理也多花了一点时间,毕竟基础不牢,地洞山摇嘛,都是为以后打夯基础。下面这张图中流非常的多,不用晕哈,我们现在先只学其中的四个抽象基类,包含其中的四个文件流、四个缓冲流。

一、IO流:

上图是按照数据类型将IO流划分为字节流和字符流,其实还有一种按照数据的流向来划分的方法,将其划分为输入流和输出流。

概念: 

IO:输入/输出(Input/Output)
流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输。
IO流就是用来处理设备间数据传输问题的。常见的应用:文件复制;文件上传;文件下载

二、字节流:

字节流分为字节输入流和字节输出流。

1、字节输入流:

字节输入流(InputStream):

IO流下的四个抽象基类之一,是表示字节输入流的所有类的超类。

我们先学习它其中的FIleInputStream和BufferedInputStream。

FIleInputStream:

构造方法:FileInputStream(String name)

读取字节数据方法:

intread​()

从该输入流读取一个字节的数据。

intread​(byte[] b)

从该输入流读取最多 b.length个字节的数据到一个字节数组。

intread​(byte[] b, int off, int len)

从该输入流读取最多 len个字节的数据到字节数组。

BufferedInputStream:

字节缓冲输入流。
创建BufferedInputStream将创建一个内部缓冲区数组。 当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节。使用该缓冲流读取数据时会比较快捷。FileInputStream的三个读取方法它也可以使用。

构造方法:BufferedInputStream(InputStream in)

2、字节输出流: 

字节输出流(OuputStream):

IO流下的四个抽象基类之一,是表示字节输出流的所有类的超类。

我们先学习它其中的FileOutputStream和BufferedOutputStream。

FileOutputStream:

构造方法:FileOutputStream(String name)

写入字节数据方法:

voidwrite​(byte[] b)

b.length字节从指定的字节数组写入此文件输出流。

voidwrite​(byte[] b, int off, int len)

len字节从指定的字节数组开始,从偏移量 off开始写入此文件输出流。

voidwrite​(int b)

将指定的字节写入此文件输出流。

BufferedOutputStream:

字节缓冲输出流。
该类实现缓冲输出流。 通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用。

FileOutputStream的三个写数据方法它也能用。

构造方法:BufferedOutputStream(OutputStream out)

三、字符流: 

字符流分为字符输入流和字符输出流。 

1、字符输入流: 

字符输入流(Reader)。

用于读取字符流的抽象类。

我们先学习它的InputStreamReader和BufferedReader。

InputStreamReader:

是从字节流到字符流的桥梁。
它读取字节,并使用指定的编码将其解码为字符。
它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。

构造方法:

InputStreamReader​(InputStream in)

创建一个使用默认字符集的InputStreamReader。

InputStreamReader​(InputStream in, String charsetName)

创建一个使用命名字符集的InputStreamReader。

读字符数据方法:

intread​()

读一个字符

intread​(char[] cbuf, int offset, int length)

将字符读入数组的一部分。

FileReader:

继承自InputStreamReader

用于读取字符文件的便捷类。

构造方法:FileReader​(String fileName)

BufferedReader:

字符缓冲输入流。
从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取,可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途。

构造方法:BufferedReader(Reader in)

特有方法:

StringreadLine​()读一行文字。 结果包含行的内容的字符串,不包括任何行终止字符如果流的结尾已经到达,则为null

注意:此方法不读换行符等,换行需自加。

2、字符输出流:

字符输出流(Writer)。 

我们先学习它的OutputStreamWriter和BufferedWriter。

OutputStreamWriter: 

是从字符流到字节流的桥梁,使用指定的编码将写入的字符编码为字节

它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集

构造方法:

OutputStreamWriter​(OutputStream out)

创建一个使用默认字符编码的OutputStreamWriter。

OutputStreamWriter​(OutputStream out, String charsetName)

创建一个使用命名字符集的OutputStreamWriter。

写入字符数据方法: 

void write(int c)写一个字符
void write(char[] cbuf)写入一个字符数组
void write(char[] cbuf, int off, int len)写入字符数组的一部分
void write(String str)写一个字符串
void write(String str, int off, int len)写一个字符串的一部分

刷新和关闭流的方法:

voidclose​()

关闭流,先刷新。

voidflush​()

刷新流。

FileWriter:

用于写入字符文件的便捷类。

构造方法:FileWriter​(String fileName)

BufferedWriter:

字符缓冲输出流。
将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,可以指定缓冲区大小,或者可以接受默认大小。默认值足够大,可用于大多数用途。

注意:使用该缓冲流写入数据后记得使用flush方法刷新流,避免数据停留在缓冲区。

构造方法:BufferedWriter(Writer out) 

特有方法:

void newLine()写一行行分隔符,行分隔符字符串由系统属性定义

小问题:

输入和输出两个概念个人很难区分,例如读取文本数据时,应该先创建字符缓冲输入流对象,也就是BufferedReader,但我老是会混淆,我会下意识的创建BufferedWriter,会把写(Writer)当成输入,把读(Reader)当成输出。

本文发布于:2024-02-01 06:56:57,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170674181734714.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:就会   很难   为我   桃花   IO
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23