1.外存和内存
在我们生活中,我们会经常提及文件/文件夹。我们说的文件通常指“硬盘”上的文件,也就是“外存”。有外存就会有内存,那么什么是内存呢?
内存:内存(Memory)是计算机的重要部件,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据
外存和内存的比较
速度:内存比硬盘(外存)快很多
空间:硬盘(外存)比内存大很多
成本:内存比硬盘(外存)贵
持久性:内存掉电后数据丢失,硬盘(外存)掉电后数据存在
我们之前的代码,如javaSE,数据结构都是围绕内存展开的,就是在内存上申请空间,Mysql主要是操作硬盘
同样的在文件io这里也是可以操作硬盘(外存)的
1.文件操作系统
创建文件,删除文件,重命名文件,创建目录
2.文件内容操作
针对文件进行读和写
2.路径
我们知道要打开一个文件夹,需要一步步找到这个文件夹在哪个位置。
路径就是咋们系统上的文件/目录,具体位置
计算机的文件和目录是有层级结构的(如图),计算机的目录是N叉树
文件路径:就是从树的根节点出发,沿着树枝一直往下走,达到目标文件,中间经过的内容,表示路径的时候,一般把“此电脑”省略,直接从盘符开始
下图这就是一个路径,实际表示路径是通过一个字符串表示的,每个目录之间有‘/’或‘\’来分割
D:\gitte\javacode\javacode\23-04-02\src
绝对路径:
从盘符开始,一层一层往下找,这个过程得到的路径就是绝对路径
D:\gitte\javacode\javacode\23-04-02\src
相对路径:
从某一个给定的目录出发,一层一层往下找,得到的就是相对路径
假设我们给定的目录是 gitte
那么相对路径为:./javacode/javacode/23-04-02/src
假设我们给定的目录是 第二个javacode
那么相对路径为:./23-04-02/src
文件系统上,任何一个文件对应的路径,是唯一的,不是存在两个路径相同,但是文件不同的情况。
Windows上认为路径个文件是一一对应的
路径就相当于文件的“身份标识”
3.文本文件和二进制文件
文本文件存储的是文本,文本文件的内容都是由ASCII组成的
对于ASCII来说,范围是0-127,后来有添加了UTF8一类的,这样就可以针对其他类型的语言文字符号进行编码了。
二进制文件存储的是二进制数据(没有任何字符集的限制,存什么都可以,不受限制)
那么问么判定文件是不是文本文件还是二进制文件呢?
很简单,将文件用记事本打开,能看懂就是文本文件,看不懂就是二进制文件 。
例如:
txt =》文本文件
.java.c=》文本文件
.class=》二进制文件
.exe =》二进制文件
Jpg和mp3都是二进制的
word和excel也都是二进制的文件
4.文件系统操作
在Java的标准库中,提供了File这个类(File对象是硬盘上文件的“抽象”表示)
文件在硬盘上,直接通过代码访问不是很方便,于是我们在内存上创建一个对象,操作这个对象就可以间接的影响到硬盘上的文件情况了。
构造File对象
构造过程中,我们可以使用绝对路径/相对路径 进行初始化
文件可以存在也可以不存在。
java.io.File;
其中的IO指的是Input和Output即表示输入和输出
同时File也提供一些方法
这些方法看一眼就知道怎么用,其中的createNewFile()这个需要手动调用才会创建,下面给大家简单的调用几个方法
import java.io.File;
import java.io.IOException;
public class Demo1 {
public static void main(String[] args) throws IOException {
File file=new File("./hello_word.txt");
System.out.println(file.exists());
System.out.println(file.isDirectory());
System.out.println(file.isFile());
//创建文件
file.createNewFile();
System.out.println(file.exists());
System.out.println(file.isDirectory());
System.out.println(file.isFile());
//删除文件
file.delete();
System.out.println(file.exists());
System.out.println(file.isFile());
}
}