文件操作和IO

目录

1. 什么是IO

2. 存储和硬盘

3. 文件系统

文件路径

​编辑​ 文件分类

Java对于文件系统操作的 API

1. 针对文件系统的操作

File 概述

2. 针对文件内容的操作

1. 字节流

2. 字符流


1. 什么是IO

IO 就是输入输出 (input 和 output). 

输入输出是相对 cpu 来说的, 数据从硬盘到 cpu 就是输入, 而从 cpu 到硬盘就是输出了.

2. 存储和硬盘

计算机中, 用于数据直接处理的是内存,存储数据的是硬盘.

硬盘的定义: 用来存储数据的存储设备, 它以磁盘的形式存储数据. 

计算机中存储数据的设备:

访问速度空间价格数据
cpu最快最小最贵丢失
内存其次其次其次丢失
硬盘最慢最大最便宜不丢失

3. 文件系统

文件, 意思就是存储在硬盘上的文件.

操作系统有一个专门的模块, 文件系统. 此处文件系统是按照树形结构来组织文件的, 这里的树 不是"二叉树", 而是 N 叉树. 每一个普通文件(不是目录) 都是一个叶子节点, 一个目录文件里又有很多叶子节点.

文件路径

操作系统使用 "路径" 这样的概念来描述一个文件的位置.

文件路径呢 分为绝对路径和相对路径.

绝对路径: 指从根节点出发, 一层一层最终到达目标文件.

相对路径: 先指定一个 "当前目录" / "基准目录" , 从这个目录出发, 找到目标文件.

​ 文件分类

1. 文本文件 (能看懂的文件)

2. 二进制文件 (打开是乱码的文件)

给你一个文件, 想知道它是二进制文件还是文本文件. 可以使用记事本打开它, 不是乱码就是文本文件.

Java对于文件系统操作的 API

1. 针对文件系统的操作

包括不限于 创建文件 / 删除文件 / 文件重命名...

Java 中通过 java.io.File 类来对⼀个⽂件(包括⽬录)进⾏抽象的描述。

File 概述

属性

路径之间的分隔符 , 是根据系统自动调整的. 实际开发还是建议使用 / 

构造方法

构造 File 对象, 需要指定路径. 此处可以是 绝对路径 也可以是 相对路径 . 

这个路径可以不存在.

方法示例

deleteOnExit() 

退出时删除, 这样的文件也称为临时文件. 有些程序就带有 临时文件 的功能.

renameTo()

文件重命名.

它还能移动文件 . 将 text.txt 引动到 ./aa 目录下.

public static void main(String[] args) {
        File file = new File("text2.txt");
        File dest = new File("./aa/text2.txt");
        file.renameTo(dest);
    }

平时如果复制一个大的文件, 是比较费时间的.

如果是移动一个大的文件, 此时移动就是简单的重命名 O(1) . (前提是在同一个硬盘上)

2. 针对文件内容的操作

读文件 和 写文件.

文件内容的读写 --- 数据流

1. 字节流

以字节为单位进行读写, 一次最少读写一个字节.

代表类: InputStream (输入)    OutputStream (输出).

2. 字符流

以字符为单位进行读写. 例如 如果是 utf8 表示汉字, 一个汉字三个字节, 每次读写都得以3个字节为单位, 不能一次读写半个汉字.

代表类: Reader (输入)       Writer (输出)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值