文章目录
- ✍一、文件的基本认识
- 1.文件是什么?
- 2.文本文件和二进制文件
- 3.文件权限
- 4.相对路径和绝对路径
- 1.1绝对路径
- 1.2相对路径
- ✍二、文件的基本操作
- 1.FIle的属性
- 2.File的构造方法
- 3.File类的方法
- 3.1File类的获取操作
- 3.2File类的判断操作
- 3.3文件创建和删除
- 3.4其他的常用方法
✍一、文件的基本认识
1.文件是什么?
文件是计算机中的基本数据单位,也是存储在外部介质(如磁盘、光盘等)上的具有标识名的一组相关信息的集合。文件的基本结构包括文件名、文件内容以及文件属性。
文件可以是文本文档、图片、视频、音频、程序等各种类型。每个文件都有一个唯一的文件名,它用于标识和区分不同的文件。文件内容则是文件的主体部分,包含实际的数据或信息。文件属性则提供有关文件的附加信息,如创建日期、修改日期、大小、权限等。
在计算机系统中,文件通过文件系统来组织和管理。文件系统负责文件的存储、检索、保护和共享等操作。用户可以通过文件系统来创建、打开、编辑、保存和删除文件,从而实现数据的存储和传输。
文件在计算机中扮演着重要的角色,它们是数据交换和存储的主要方式之一。无论是个人用户还是企业组织,都依赖文件来保存和处理各种类型的信息。
2.文本文件和二进制文件
文本文件和二进制文件是计算机中两种主要的文件类型,它们在存储和处理数据时有着不同的特点和用途。
文本文件:
文本文件是一种由一系列字符组成的文件,通常用于存储人类可读的文本信息。文本文件中的字符通常使用ASCII、UTF-8或其他字符编码标准来表示。由于文本文件的内容是可读的文本,它们可以很容易地被人类阅读和编辑。常见的文本文件扩展名包括 .txt、.doc、.csv、.xml 等。
文本文件通常用于存储简单的文本数据,如文档、配置文件、日志文件等。由于文本文件的内容是明文的,因此它们通常用于在不同系统和应用程序之间交换数据,因为这些系统和应用程序都能够理解并处理文本数据。
二进制文件:
二进制文件则是由一系列二进制位(0和1)组成的文件,用于存储机器可读的数据。这些数据可能是程序、图像、音频、视频或其他非文本信息。二进制文件的内容通常对人类来说是不可读的,需要使用特定的软件或工具来解析和显示。常见的二进制文件扩展名包括 .exe、.jpg、.mp3、.avi 等。
二进制文件通常用于存储复杂的数据结构和程序,因为它们能够直接存储计算机能够理解的机器语言。由于二进制文件存储的是原始数据,因此它们通常比文本文件更小、更高效,并且能够更准确地表示数据。然而,由于二进制文件的格式通常是特定于应用程序或系统的,因此它们可能不如文本文件那样容易在不同的系统和应用程序之间交换。
判断文件是二进制文件还是文本文件
使用记事本打开该文件,如果不是乱码,就是文本文件。如果是乱码,就是二进制文件。
(记事本,属于把文件内容,按照文本的方式来理解)
3.文件权限
文件权限是指文件的访问控制,即哪些用户可以访问文件并执行什么样的操作。文件权限规定了用户对文件的操作权限,包括读取权限(r)、写入权限(w)和执行权限(x)。
- 读取权限(r):允许用户读取文件的内容。对于目录,具有读取权限的用户可以列出目录中的文件列表。
- 写入权限(w):允许用户修改文件的内容。对于目录,具有写入权限的用户可以在目录中创建或删除文件。
- 执行权限(x):对于普通文件,表示用户可以执行该文件。对于目录,则意味着用户可以进入该目录。
文件权限是针对每个文件或目录设置的,它规定了对应的所有者、所属组和其他用户对文件的读取、写入和执行权限。这些权限可以分别针对所有者、所属组和其他用户进行设置。例如,在Linux系统中,可以使用ls -l命令查看文件或目录的权限设置。
文件权限与用户权限共同决定了用户对文件的实际操作权限。当用户对文件进行操作时,系统会根据文件的权限设置以及用户所属的用户组来确定用户对文件的读取、写入和执行权限。
总的来说,文件权限是确保文件安全和系统稳定的重要机制,它允许管理员或文件所有者控制谁可以访问和修改文件,以及他们可以执行哪些操作。
4.相对路径和绝对路径
文件的路径(File Path)是指在计算机文件系统中用于定位和访问文件或目录的完整地址。它通常是由一系列目录名称和子目录名称组成的序列,这些名称按照它们在文件系统中的层次结构进行排列,并使用特定的分隔符(如斜杠“/”或反斜杠“\”)进行分隔。(通常使用/
,因为\
在字符串中容易被解析成转义字符)
文件路径可以是绝对路径或相对路径:
1.1绝对路径
绝对路径是从文件系统的根目录开始,一直到目标文件或目录的完整路径。它包含了从根目录到目标位置的所有目录和子目录的名称。绝对路径不依赖于当前的工作目录,因此它总是能够精确地定位到文件系统中的特定位置。
1.2相对路径
相对路径则是相对于当前工作目录的路径。它不需要从文件系统的根目录开始,而是从当前所在的目录开始,指定到达目标文件或目录的路径。相对路径依赖于当前的工作目录,因此如果当前工作目录改变,相同的相对路径可能会指向不同的文件或目录。
我们以D:\IDEA\IntelliJ IDEA Community Edition 2022.3.3\bin
为工作目录,我们要在bin文件夹下寻找idea64.exe
相对路径:./idea64.exe
。
这里的.
就代表工作目录 D:\IDEA\IntelliJ IDEA Community Edition 2022.3.3\bin
绝对路径:D:\IDEA\IntelliJ IDEA Community Edition 2022.3.3\bin\idea64.exe
✍二、文件的基本操作
针对文件系统的操作, 主要是文件/目录的创建和删除, 文件的重命名等.
Java标准库中提供了一个File类, 能够完成对某一路径上的文件进行操作.
1.FIle的属性
修饰符及类型 | 属性 | 说明 |
---|---|---|
static String | pathSeparator | 依赖于系统的路径分隔符(/或者), String类型的表示. |
public static final char | pathSeparatorChar | 依赖于系统的路径分隔符(/或者), char类型的表示. |
2.File的构造方法
签名 | 说明 |
---|---|
File(File parent, String child) | 根据父文件对象 + 孩子文件路径, 创建文件 |
File(String path name) | 根据一个文件路径去创建文件 |
File(String parent, String child) | 根据父目录(路径) + 孩子路径,创建文件 |
构造File对象时,写的路径,不一定要存在
File(File parent, String child)
File parentDir = new File("/home/user/documents");
File file = new File(parentDir, "myfile.txt");
// 此时,file 代表的路径是 /home/user/documents/myfile.txt
File(String parent, String child)
File file = new File("/home/user/documents", "myfile.txt");
// 此时,file 代表的路径是 /home/user/documents/myfile.txt
3.File类的方法
3.1File类的获取操作
返回值 | 方法 | 说明 |
---|---|---|
Sting | getParent() | 返回File对象父目录文件路径 |
String | getName() | 返回File对象文件名 |
String | getPath() | 返回File对象文件路径 |
String | getAbsolutePath() | 返回File对象的绝对路径 |
String | getCanonicalPath() | 返回File对象修饰过的绝对路径 |
public static void main(String[] args) throws IOException {
File file = new File("d:/Test.txt");
//获取File对象的文件名
System.out.println(file.getName());
//获取File对象的文件路径
System.out.println(file.getPath());
//获取File对象父目录文件路径
System.out.println(file.getParent());
//获取File对象的绝对路径
System.out.println(file.getAbsoluteFile());
//返回File对象修饰过的绝对路径
System.out.println(file.getCanonicalPath());
}
3.2File类的判断操作
返回值 | 方法 | 说明 |
---|---|---|
boolean | exists() | 判断File对象代表的文件是否真实存在 |
boolean | isDirectory() | 判断File对象代表的文件是否是一个目录 |
boolean | isFile() | 判断File对象代表的文件是否是一个普通文件 |
boolean | isHidden() | 判断File对象代表的文件是否是一个隐藏文件 |
boolean | isAbsolute() | 判断File对象路径名是否是绝对路径 |
boolean | canRead() | 判断用户是否对文件有可读权限 |
boolean | canWrite() | 判断用户是否对文件有可写权限 |
boolean | canExecute() | 判断用户是否对文件有可执行权限 |
public static void main(String[] args) {
File file = new File("d:/Test.txt");
//判断File对象代表的文件是否存在
System.out.println(file.exists());
//判断File对象代表的文件是否时一个目录
System.out.println(file.isDirectory());
//判断File对象代表的文件是否是一个普通文件
System.out.println(file.isFile());
//判断File对象代表的文件是否是一个隐藏文件
System.out.println(file.isHidden());
//判断File对象路径名是否是绝对路径
System.out.println(file.isAbsolute());
//判断用户是否对文件有可读权限
System.out.println(file.canRead());
//判断用户是否对文件有可写权限
System.out.println(file.canWrite());
//判断用户是否对文件有可执行权限
System.out.println(file.canExecute());
}
3.3文件创建和删除
返回值 | 方法 | 说明 |
---|---|---|
boolean | createNewFile() | 自动创建一个新文件,创建成功返回true |
boolean | mkdir() | 创建File对象表示的目录 |
boolean | mkdir() | 创建File对象表示的多级目录 |
boolean | delete() | 根据File对象删除该文件,删除成功返回true |
void | deleteOnExist() | 根据File对象,标注该文件将被删除,当JVM运行结束才会执行 |
代码展示:
在idea默认目录下进行展示
public static void main(String[] args) throws IOException {
File file = new File("./abc.txt");
//文件未创建,则创建新文件
if (!file.exists()){
file.createNewFile();
System.out.println("创建成功!~~");
}
//创建一个文件夹(目录)
file = new File("./temp");
file.mkdir();
System.out.println("创建目录成功!~~");
//创建多个目录
file = new File("./aaa/bbb/ccc");
file.mkdirs();
System.out.println("创建多个目录成功!~~");
}
执行结果:
如果在执行完代码后,没有出现如上效果
右键项目,点击Reload from Disk
刷新一下
文件的删除
File file1 = new File("./abc.txt");
file1.delete();
关于删除方法中的deleteOnExist()
不太好演示, 这里解释一下, 这个方法的功能是在程序退出的时候, 自动删除文件, 当我们在程序中需要用到一些 “临时文件” 的时候, 可以用到这个方法, 保证在程序退出的同时把临时文件给删除掉.
什么时候会用到临时文件的呢, 比如这里打开一个word文档, 在打开的同时就会在同级目录下生成出一个临时文件, 关闭word, 这个临时文件被删除了, 临时文件发挥的功能是实时保存我们实时编辑的内容(尤其是没有保存的内容), 防止我们编辑了很多内容但由于一些问题导致我们没有进行保存, 比如工作一半突然停电了, 东西还没来得及保存, 但由于临时文件中实时保存了我们编辑的内容, 等到再次启动word文档时, 就会提醒我们是否要恢复之前的编辑内容.
3.4其他的常用方法
返回值 | 方法 | 说明 |
---|---|---|
String[] | list() | 返回File对象目录下所有的文件名 |
File[] | listFiles() | 返回File对象目录下的所有文件,以File对象的形式表示 |
boolean | renameTo(File dest) | 对文件进行改名 |
public static void main(String[] args) {
File file = new File("./");
File temp1 = new File("./aaa");
File temp2 = new File("./eee");
//获取当前路径目录下所有文件名
System.out.println(Arrays.toString(file.list()));
//将目录aaa更名为eee
System.out.println(temp1.renameTo(temp2));
//重新获取当前路径目录下所有文件名
System.out.println(Arrays.toString(file.list()));
}
以上就是本文所有内容,如果对你有帮助的话,点赞收藏支持一下吧!💞💞💞