| # 集成电路 |
| 0. 电子元件构成的电路板:只能存储0和1 |
| 读写速度:CPU > 内存 > 硬盘 |
| 1. cpu:中央处理器(Central Processing Unit) |
| 1). 作用:调用,计算 |
| 2). 速度最快 |
| 2. 内存:临时性存储设备 |
| 1). 作用:缓存数据给CPU进行操作 |
| 2). 特点:通电工作,断电数据清空 |
| 3). 速度次之 |
| 3. 硬盘:持久性存储设备 |
| 1). 作用:长久保存数据 |
| 2). 速度最慢 |
| # 读写 |
| 1. 读 |
| 硬盘 -> 内存 -> CPU |
| 2. 写 |
| CPU -> 内存 -> 硬盘 |
| |
| # IO流 |
| 0. 以内存为对象 |
| 1. input:输入(读) |
| 硬盘 -> 内存 |
| 2. output:输出(写) |
| 内存 -> 硬盘 |
| 3. IO流分类 |
| 字符流只能操作纯文本文件 |
| 字节流什么类型的文件都可以操作 |
| 4. 创建字节输出流的对象 |
| 1). FileOutputStream(String) / FileOutputStream(File) |
| I. 注意点: |
| 如果文件不存在,会自动创建 |
| 如果文件存在,会默认把文件覆盖 |
| II. 操作 |
| FileOutputStream fos = new FileOutputStream("day10/a.txt"); |
| fos.write(98); |
| fos.close(); |
| 2). FileOutputStream(String, true) / FileOutputStream(File, true) |
| 如果文件不存在,会自动创建 |
| 如果文件存在,不会覆盖原文件,在文件末尾追加 |
| 5. 字节输出流的write()方法 |
| 6. 获取系统换行符(可以跨平台) |
| String separator = System.lineSeparator(); |
| 7. 字节流IO异常处理 |
| try...catch |
| 8. 字符输入流 |
| 1). 字节数组 |
| 2). 循环读取 |
| |
| # 复制文件:一个读,一个写(重点) |
| 1. 字节输入流:读原文件 |
| fis new FileInputStream |
| 2. 字节输出流:写副本文件 |
| fos new FileOutputStream |
| 两种方式 |
| 1. 方案一: 一次复制一个字节 |
| int content; |
| while((content = fis.read()) != -1) { |
| fos.write(content); |
| } |
| // 习惯: 先开的后关 |
| fos.close(); |
| fis.close(); |
| 2. 方案二: 一次复制一个字节数组 |
| int length; |
| byte[] buffer = new byte[1024]; |
| while((length = fis.read(buffer)) != -1) { |
| fos.write(buffer, 0, length); |
| } |
| |
| 内存和硬盘 |
| 用空间换时间 |
| 指的是占用内容空间越大,速度就越快 |
| 但是根据情况,内存占用也有上限 |
| # 字节缓冲流 |
| BufferedInputStream |
| BufferedOutputStream |
| # 乱码问题 |
| 1. 观察 |
| 1). 一个英文字母1个字节 |
| 2). 一个中文字符3个字节 |
| 2. 问题 |
| 1). 用字节流读中文会乱码 |
| 2). 用字符流读中文不会乱码还很准确 |
| 3. 编码表 |
| 0). 作用: 将人类的字符和计算机01进行转换 |
| 1). ASCII码(美国) |
| I. 占一个字节 |
| II. 128个字符 |
| 2). ISO-8829-1码(欧洲: 拉丁码) |
| I. 占一个字节 |
| II. 256个字符 |
| 兼容了ASCII码表 |
| 3). GBK(国标扩) |
| I. 占两个字节 |
| II. 65536个字符 |
| 兼容了ASCII码表 |
| 4). UTF-8 |
| I. 英文字母一个字节,中文字符3个字节 |
| Windows中文版系统默认编码 |
| |
| # 字符流 |
| 字符流 = 字节流 + 编码表 |
| 1. FileReader: 字符输入流 |
| = FileInputStream + 平台默认编码表(IDEA默认UTF-8) |
| 2. FileWriter: 字符输出流 |
| = FileOutputStream + 平台默认编码表(IDEA默认UTF-8) |
| |
| # 编解码 |
| 1. 编码(写) |
| 将人看得懂 -> 计算机看得懂 |
| a -> 0110 0001 |
| 2. 解码(读) |
| 计算机看得懂 -> 人看得懂 |
| 0110 -> a |
| 3. 编码和解码都会用到编码表 |
| 4. 乱码 |
| 1). 第一种: 不支持这个编码规则 |
| 2). 第二章: 编码和解码使用的编码表不一致 |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通