JAVA - File类、字节流、字符流、特殊操作流

1.File类的构造方法

在这里插入图片描述

File类的创建文件功能

在这里插入图片描述

File类的判断和获取功能

在这里插入图片描述

File类的删除功能

在这里插入图片描述

2.IO流 - 字节流、字符流

字节流

  1. 处理字节数据:字节流以字节为单位处理数据,适用于处理二进制文件(如图像、音频、视频文件)或以字节为基本单位的文本文件。

  2. 底层 I/O 操作:字节流通常用于执行底层I/O操作,因为它们可以直接读取和写入文件的字节数据。

  3. InputStream 和 OutputStream:在Java中,字节流有两个主要的抽象类:InputStream 用于读取字节数据,OutputStream 用于写入字节数据。

  4. 不适合字符数据:虽然可以用字节流来处理字符数据,但它们不够方便,因为它们不会处理字符编码,可能会导致字符数据在不同编码下的错误解释。

字符流

  1. 处理字符数据:字符流以字符为单位处理数据,适用于处理文本文件,如.txt文件。

  2. 字符编码:字符流在读取和写入数据时会考虑字符编码,以确保正确地处理不同编码的文本数据。

  3. Reader 和 Writer:在Java中,字符流有两个主要的抽象类:Reader 用于读取字符数据,Writer 用于写入字符数据。

  4. 适合文本处理:字符流更适合于文本文件的读取和写入,因为它们能够处理字符编码、字符集等字符相关的问题。

  • 如果您需要处理文本文件,特别是需要考虑字符编码和字符集的情况下,建议使用字符流(Reader和Writer)。
  • 如果您需要处理二进制文件或以字节为单位的数据,使用字节流(InputStream和OutputStream)更合适。
  • 在实际应用中,通常会根据需要选择合适的流类型,以确保数据的正确处理和高效性能。

JAVA字节流

InputStream// :这个抽象类是字节输`入`流的所有类的超类
OutputStream// :这个抽象类是字节输`出`流的所有类的超类
// 子类名特点:子类名称都是以其父亲名作为子类名的后缀

FileOutputStream// :文件输出流用于将数据写入File

字节流写入的三种方式:

在这里插入图片描述

字节缓冲流

在这里插入图片描述

字符流

  • 汉字在存储的时候,无论哪种编码存储,第一个字节都是负数,所以才有了字符流专门解析文本
  • 字符流 = 字节流 + 编码表

编码和解码

编码:byte[] getBytes()
解码:String(byte[] bytes)

字符流抽象基类

  • Reader:字符输入流的抽象类
  • Writer:字符输出流的抽象类
  • 字符流中和编码解码问题相关的两个类:InputStreamReader; OutputStreamWriter;

字符流写数据的五种方式

在这里插入图片描述

字符流读数据的两种方式

在这里插入图片描述

字符缓冲流

  • BufferedWriter:将文本写入字符输出流,缓冲字符,提供单个字符,数组和字符串的高效写入,可以指定缓冲区大小。默认值足够大,可用于大多数情况
  • BufferedReader:以读取文本在字符输入流,缓冲字符,提供字符,数组和行的高效读取,可以指定缓冲区大小。默认值足够大,可用于大多数情况

字符缓冲流的特有功能
在这里插入图片描述

IO流小结

在这里插入图片描述

Properties

在这里插入图片描述

3.特殊操作流-标准输入输出流

在这里插入图片描述
键盘录入类: new Scanner(System.in)

  • 标准输出流
    在这里插入图片描述

字节打印流

  • 字节打印流:PrintStream
  • 字符打印流:PrintWriter

字符打印流

  • 字符打印流PrintWriter
    在这里插入图片描述

对象序列化

在这里插入图片描述

对象序列化流

在这里插入图片描述

serialVersionUID&transient

在这里插入图片描述

对象反序列化流

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Supernova_gu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值