Java中IO知识点文档

1、IO流详解

Java中的字节流与字符流详解
Java中杂七杂八的流详解

2、流的分类

在这里插入图片描述

  • 根据作用划分:
    在这里插入图片描述

3、流的继承关系

字节流:
在这里插入图片描述
字符流:
在这里插入图片描述

4、各个流的构造以及特点

因为在学习流的时候,发现很多流本身的构造方法需要一个新的流,它们之间互相使用,让人理不清楚,这里做一个总结:

FileInputStream与FileOutputStream流

public FileInputStream(File file) throws FileNotFoundException
需要一个文件类型的对象;
public FileInputStream(String name) throws FileNotFoundException
给定文件路径的字符串形式;
public FileOutputStream(File file) throws FileNotFoundException
需要一个文件类型的对象;
public FileOutputStream(File file, boolean append) throws FileNotFoundException
文件类型的对象,后一个参数是布尔类型的变量,表示是否追加写入;
public FileOutputStream(String name) throws FileNotFoundException
给定一个文件的路径名的字符串形式;
public FileOutputStream(String name, boolean append) throws FileNotFoundException
给定文件路径字符串,布尔类型的参数表示是否追加写入;

【特点】:

这个流应用地方很多,很多流的构造都可以将它作为参数;

BufferdInputStream与BufferdOutputStream流

public BufferedInputStream(InputStream in)
需要一个InputStream类型的参数,我们可以给定一个InputStream的子类,比如上面的FileInputStream;
public BufferedInputStream(InputStream in, int size)
第一个参数和上一个构造一样,第二个参数是指定一个缓冲大小;
public BufferedOutputStream(OutputStream out)
需要一个OutputStream类型的参数,我们可以给定一个它的子类,比如上面的FileOutputStream;
public BufferedOutputStream(OutputStream out, int size)
第一个参数和上面一样,第二个参数是根据自己实际开发需求给定的大小;

【特点】:

高效的字节流,因为它的底层维护了一个缓冲区;

ByteArrayInputStream与ByteArrayOutputStream流

public ByteArrayInputStream(byte[] buf)
需要一个字节数组作为参数;
public ByteArrayInputStream(byte[] buf, int offset, int length)
字节数组作为参数,并且指定读取的起始位置和读取的字节个数;
public ByteArrayOutputStream()
创建一个新的 byte 数组输出流。缓冲区的容量最初是 32 字节,如有必要可增加其大小;
public ByteArrayOutputStream(int size)
创建一个新的 byte 数组输出流,它具有指定大小的缓冲区容量(以字节为单位);

【特点】:

  • 它只是一个内存流,因此读和写都只能是以字节数组作为传输对象,但是他可以配合其他流使用;

ObjectInputstream与ObjectOutputStream流

public ObjectInputStream(InputStream in) throws IOException
需要一个InputStream流的子类,上面的流都可以;
public ObjectOutputStream(OutputStream out) throws IOException
需要一个OutputStream流的子类,上面的流都可以;

【特点】:

可以进行深克隆,是一个序列化流(序列化:将Java对象保存到文件当中;
反序列化:将文件中的对象读取回到内存);

InputStreamReader与OutputStreamWriter流

public InputStreamReader(InputStream in)
创建一个使用默认字符集的 InputStreamReader,需要的参数是字节输出流;
public InputStreamReader(InputStream in, String charsetName) throws UnsupportedEncodingException
给定编码方式,需要参数为字节输入流;
public OutputStreamWriter(OutputStream out)
创建使用默认字符编码的 OutputStreamWriter,需要参数是一个字节输出流;
public OutputStreamWriter(OutputStream out, String charsetName) throws UnsupportedEncodingException
给定编码方式,需要参数为字节输出流;

【特点】:

InputStreamReader流是字节流通向字符流之间的桥梁;
OutputStreamWriter流是字符流通向字节流之间的桥梁;

FileReader与FileWriter流

public FileReader(File file) throws FileNotFoundException
这一对流是上面一对流的子类,也称为便捷流,就是为了简化上面的流存在;
需要的参数也变得简单了,给定一个文件类型;
public FileReader(String fileName) throws FileNotFoundException
给定一个文件的字符串路径;
public FileWriter(File file) throws IOException
给定一个文件类型参数;
public FileWriter(File file, boolean append) throws IOException
给定文件类型参数,并指定是否追加写入;
public FileWriter(String fileName) throws IOException
给定文件的字符串路径;
public FileWriter(String fileName, boolean append) throws IOException
给定文件的字符串路径,并指定是否追加写入;

【特点】:

是InputStreamReader与OutputStreamWriter流的子类,它的存在只是因为Java觉得父类名字太长,子类做了一个简写,本质上,他们就是一样的,因此这两个流也叫做便捷流;

BufferdReader与BufferdWriter流

public BufferedReader(Reader in)
创建一个使用默认大小输入缓冲区的缓冲字符输入流,需要参数为字符流,一般给的参数是FileReader类型的;
public BufferedWriter(Writer out)
给定参数一般是FileWriter类型;

【特点】:
特有的方法:

  • 一次读取一行:
    public String readLine() throws IOException

  • 写入一个换行符:
    public void newLine() throws IOException
    任何平台都可以使用,也就是具有平台兼容性;
    之前我们使用write()写入换行符,不同的平台使用的换行符不同:

StringReader与StringWriter流

public StringReader(String s)
与上面的ByteArrayInputStream流一样,这是一个内存流,他操作字符串很方便,不能关联文件,但是可以配合其他流使用;
public StringWriter()
使用默认初始字符串缓冲区大小创建一个新字符串 writer,没有参数;
public StringWriter(int initialSize)
给定大小创建一个新字符串;

【特点】:

内存流,配合其他流使用,但是操作字符串非常方便;

CharArrayReader与CharArrayWriter流

public CharArrayReader(char[] buf)
根据指定的 char 数组创建一个 CharArrayReader。
public CharArrayReader(char[] buf, int offset, int length)
指定char数组,并指定初始索引与长度;
public CharArrayWriter()
创建一个新的 CharArrayWriter;

【特点】:

内存流,配合其他流使用,但是操作字符非常方便;

DataInputStream与DataOutputStream流

public DataInputStream(InputStream in)
使用指定的底层 InputStream 创建一个 DataInputStream;
public DataOutputStream(OutputStream out)
创建一个新的数据输出流,将数据写入指定基础输出流;

【特点】:

读写基本类型的数据非常方便;

PrintWriter与PrintStream流

这里是引用
在这里插入图片描述
两个流的构造可以给文件类型、文件路径的字符串、字节输出流的子类,后者还可以给字符输出流的子类;

【特点】:

可以把基本类型的数据写入文件中,只能写入,没有对应的读取;

RandomAccessFile流

public RandomAccessFile(File file, String mode) throws FileNotFoundException
给定文件以及文件的访问模式;
public RandomAccessFile(String name, String mode) throws FileNotFoundException
给定文件路径名以及文件的访问模式;

【特点】:

文件指针的存在可以是该流做一些类似于断点下载的需求;

Properties集合

他本身的构造不需要流作为参数,但是它的load()需要一个流作为参数;
public void load(InputStream inStream) throws IOException
需要一个字节输入流作为参数;

【特点】:

读取配置文件;

序列流SequenceInputStream

public SequenceInputStream(Enumeration<? extends InputStream> e)
通过记住参数来初始化新创建的 SequenceInputStream,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数;
public SequenceInputStream(InputStream s1, InputStream s2)
给定两个字节输入流作为参数;

【特点】:

可以将数据像串糖葫芦一样穿起来;

ZipInputStream与ZipOutputStream流

public ZipInputStream(InputStream in)
创建新的 ZIP 输入流,需要一个字节输入流;
public ZipOutputStream(OutputStream out)
创建新的 ZIP 输出流,需要一个字节输出流;

【特点】:

操作压缩文件的流;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值