目录
- 一、文件
- 1.1 认识文件
- 1.2 树型结构组织和目录
- 1.3 文件路径
- 二、Java中操作文件
- 2.1 文件系统相关的操作
一、文件
1.1 认识文件
平时说的文件一般都是指存储再硬盘上的普通文件,形如txt,jpg,MP4,rar等这些文件都可以认为是普通文件,它们都是再硬盘上存储的。
在计算机中,文件可能是一个广义的概念,就不只是包含普通文件,还可以包含目录(把目录称为目录文件)
文件可以是文本文档、图片、程序等等。文件通常具有点+三个字母的文件扩展名,用于指示文件类型(例如,图片文件常常以JPEG格式保存并且文件扩展名为.jpg)。
普通文件是保存在硬盘上的。
机械硬盘的基本构造:
1.盘片,存储数据的介质
2.磁头
针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,
往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概
念,就类似办公桌上的一份份真实的文件一般。
文件除了有数据内容之外,还有一部分信息,例如文件名、文件类型、文件大小等并不作为文件的数据
而存在,我们把这部分信息可以视为文件的元信息。
文件的分类(站在程序员的角度)
主要把文件分为两类
1.文本文件,里面存储的是字符,文本文件本质上也是存字节的,但是文本文件中相邻的字节在一起正好构成一个个字符。
2.二进制文件,里面存储的是字节
1.2 树型结构组织和目录
计算机里,保存管理文件,是通过操作系统中“文件系统”这样的模块来负责的。
随着文件越来越多,对文件的系统管理也被提上了日程,如何进行文件的组织呢,一种合乎自然
的想法出现了,就是按照层级结构进行组织 —— 也就是我们数据结构中学习过的树形结构。这样,一
种专门用来存放管理信息的特殊文件诞生了,也就是我们平时所谓文件夹(folder)或者目录(directory)的
概念。
1.3 文件路径
如何在文件系统中如何定位我们的一个唯一的文件就成为当前要解决的问题,但这难不倒计算机科学
家,因为从树型结构的角度来看,树中的每个结点都可以被一条从根开始,一直到达的结点的路径所描
述,而这种描述方式就被称为文件的绝对路径(absolute path)。
除了可以从根开始进行路径的描述,我们可以从任意结点出发,进行路径的描述,而这种描述方式就被
称为相对路径(relative path),相对于当前所在结点的一条路径。
即使是定位到同一个文件,如果基准目录不同,此时相对路径也不同。
二、Java中操作文件
2.1 文件系统相关的操作
文件系统相关的操作指的是通过”文件资源管理器“能够完成的一些功能。
功能:
- 列出目录中有哪些文件
- 创建文件
- 创建目录
- 删除文件
- 重命名文件
- …
在Java中提供了一个File类,通过这个类来完成上述操作
首先File类就描述一个文件/目录
File的构造方法,能够传入一个路径,来指定一个文件,这个路径可以是绝对路径也可以是相对路径
文件操作,也是一种输入输出,File这个东西也就在IO中
这样就可以定位到具体的文件,是以绝对路径的方式。
- 如果是通过命令行的方式(java.Demo),此时执行命令所在的目录,就是基准路径
- 如果是通过IDEA的方式来运行程序,此时基准路径就是当前Java项目所在的路径
- 把一个java代码打残war包,放到tomcat上运行
这种情况下基准路径就是tomcat的bin目录
一旦路径指定错了,很容易出现找不到的情况~
package file;
import java.io.File;
import java.io.IOException;
@SuppressWarnings({"all"})
public class Demo {
public static void main(String[] args) throws IOException {
File f = new File("d:/text.txt");
// 获取到文件的父目录
System.out.println(f.getParent());
// 获取到文件名
System.out.println(f.getName());
// 获取到文件路径
System.out.println(f.getPath());
// 获取到绝对路径
System.out.println(f.getAbsolutePath());
// 获取到绝对路径
System.out.println(f.getCanonicalPath());
System.out.println("===================");
File f2 = new File("./test.txt");
// 获取到文件的父目录
System.out.println(f2.getParent());
// 获取到文件名
System.out.println(f2.getName());
// 获取到文件路径
System.out.println(f2.getPath());
// 获取到绝对路径
System.out.println(f2.getAbsolutePath());
// 获取到绝对路径
System.out.println(f2.getCanonicalPath());
}
}
其他的功能这里就不赘述了。