File 类 字符集 IO流 字节流 资源释放

File 类

File 类的生命周期

  1. 使用字符串路径创建 File 对象:这时只是一个路径,文件不一定存在
    new File(String pathName)
  2. 创建文件
    createNewFiles()
  3. 删除文件
    delete()

File 类创建 File 对象要注意什么

File封装的对象仅仅是一个路径名,这个路径可以是存在的,也可以是不存在的

File 对象创建后可以做什么在这里插入图片描述

File 对象创建文件需要注意什么

mkdir()只能创建一级文件夹
mkdirs() 可以创建多级文件夹
在这里插入图片描述

File 对象如何查看所有文件

在这里插入图片描述
listFiles方法:
当文件不存在时或者代表文件时,返回null
当文件对象代表一个空文件夹时,返回一个长度为0的数组
当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
当文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
当没有权限访问该文件夹时,返回null

File 对象删除文件要注意什么

delete() 只能删除文件或空文件夹,删除后也不会存放在回收站

最佳实践:如何删除文件夹

①:File默认不可以删除非空文件夹
②:我们需要遍历文件夹,先删除里面的内容,再删除自己

字符集

有哪些常用的字符集

  • ASCII字符集
  • GBK字符集
  • Unicode(UTF-8)字符集

三个字符集之间有什么不同

  1. ASCII使用1个字节存储一个字符,一个字节是8位,总共可以表示128个字符信息
  2. GBK编码中一个中文字符一般以两个字节的形式存储。同时兼容 ASCII 编码
  3. UTF-8编码后一个中文一般以三个字节的形式存储,同时也要兼容ASCII编码表

最佳实践:字符集选择

unicode字符集

为什么会出现乱码

对相同文本,编码存储和解码展示的过程中,使用的字符集不同造成的
比如,写入时,使用 UTF-8 编码,一个汉字三个字节,读取时使用 GBK 编码,每次将两个字节转换为一个汉字,这就导致读取的可能只有某个汉字的一半。

如何在Java中将字符串转换为字节,并且按照要求的字符集进行转换(编码)

在这里插入图片描述

如何在Java中将字节转换为字符串,并且按照要求的字符集进行转换(解码)

在这里插入图片描述

IO流

IO 流体系

在这里插入图片描述

所谓的输入流、输出流,是以什么为基准说的

内存
输入就是,从磁盘或网络上,将数据传输到内存
输出就是,从内存,将数据传输到磁盘或网络

字节流和字符流有什么差别

字节流可以操作所有类型的文件,包括音频视频图片等
字符流只能操作文本文件,包括java文件,txt文件等

字节流

如何创建输入字节流

在这里插入图片描述

如何读取

在这里插入图片描述

每次读取一个字节有什么问题,如何解决

性能较慢
读取中文字符输出无法避免乱码问题

可以每次读取一个字节数组,加快速度

每次读取一个字节数组有什么问题,如何解决

读取中文字符输出无法避免乱码问题

定义一个与文件一样大的字节数组,一次性读取完文件的全部字节
在这里插入图片描述

把文件数据全部读取到一个字节数组可以避免乱码,有什么问题

如果文件过大,字节数组可能引起内存溢出

如何创建输出字节流

在这里插入图片描述

如何输出字节

在这里插入图片描述

如何输出特殊字符


os.write(“\r\n”.getBytes())

如何让写出去的数据能够生效

刷新流或关闭流
在这里插入图片描述

资源释放

什么是资源

在这里插入图片描述

try catch 和 try resources 有什么不同

try catch finnally 可以在 finnally 中 释放资源,然而可以使用 try resources 简化代码
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值