目录
1.认识文件
我们平常所说的文件就是硬盘上存储的类似于.txt,压缩文件等。但是如果我们站在计算机的角度来看,文件就是一个广义的概念,不只是包含普通文件,还包括目录(文件夹),目录就被我们成为目录文件。
在操作系统中,还会用文件来描述一些其他的硬件设备或软件资源。比如网卡,这是一个硬件设备。但是操作系统就把网卡这样的硬件设备也给抽象成了一个文件。并且显示器/键盘这样的硬件设备也被操作系统视为文件。
1.1文件的分类
文件主要有两类:
1)文本文件:里面存储的是字符。
2)二进制文件:里面存储的是字节。
有的人可能会有疑问:字符不也是字节构成的吗?
是的,确实如此。文本文件本质上也是存字节的。
但是文本文件中,相邻的字节在一起正好能构成一个个的字符。
所以,我们所说的存储单位是 字符,其实意思就是:相邻的这些字节之间 是存在关联关系的,不是毫不相干的!
而二进制文件里面存储的字节,相互之间是完全没有关系。
判断一个文件是二进制文件还是文本文件,最简单的方法就是,利用记事本打开这个文件,如果是乱码就是二进制文件,如果不是乱码,一般就是文本文件。平常来说,像.txt、.c、.java都属于文本文件,像.doc、.ppt、.exe、.zip、.class都属于二进制文件。
1.2.目录的结构
计算机里,保存管理文件,是通过 操作系统 中的“文件系统” 这样的模块来负责的。
在文件系统中,一般是通过“树形”结构来组织硬盘上的目录和文件的。
在操作系统中,我们可以通过路径这样的概念,来描述一个具体文件或目录的位置。这里我们有两种路径描述风格:
1)绝对路径:以盘名为开头的,如C、D、E
2)相对路径:以 . 或者 … 开头的文件路径。其中 . 表示当前路径, … 表示当前路径的父目录(上级路径)。谈到相对路径,必须要有一个基准目录。对于路径就是从基准目录出发,按照一个什么样的路径找到的对应文件。
简单来说相对路径就是我们身处哪个地方,然后以一种什么样的方式来找到目的地。
2.Java中操作文件
Java中操作文件主要包含两类操作,一个是文件系统相关的操作,一个是文件内容相关的操作。
其中文件系统相关的操作指的是文件系统相关的操作,即通过文件资源管理器完成的一些操作。
这下操作包括:1、列出目录中有哪些文件
2、创建文件(直接右键点击菜单创建,就可以创建了)
3、创建 目录/文件夹
4、删除文件
5、重命名文件
…在Java中提供了一个File类,我们可以通过这个类完成上述操作。
File的概述:
属性:
构造方法:
File 的构造方法,能够传入一个路径,来指定一个文件。
这个路径可以是绝对路径,也可以是相对路径。
方法:
操作文件
但是在上述代码中,基准路径是啥,我们看不出来。因此 我们需要在java中的运行中找一下:
File类的方法:
public class Test1 {
public static void main(String[] args) throws IOException {
File file = new File("d:/test.txt");
System.out.println(file.getParent());// 获取到文件的父目录文件路径
System.out.println(file.getName());// 获取到文件名
System.out.println(file.getPath());// 获取到文件路径(构造 file 的时候指定的路径)
System.out.println(file.getAbsolutePath());// 获取到绝对路径
System.out.println(file.getCanonicalPath());// 获取到绝对路径.[需要处理异常]
System.out.println("====================");
File file1 = new File("./test.txt");
System.out.println(file1.getParent());// 获取到文件的父目录文件路径
System.out.println(file1.getName());// 获取到文件名
System.out.println(file1.getPath());// 获取到文件路径(构造 file 的时候指定的路径)
System.out.println(file1.getAbsolutePath());// 获取到绝对路径
System.out.println(file1.getCanonicalPath());// 获取到绝对路径.[需要处理异常]
}
}
import java.io.File;
public class TestDemo2 {
public static void main(String[] args) {
File file = new File("d:/test.txt");
System.out.println(file.exists());//判断文件是否真实存在
System.out.println(file.isDirectory());//判断文件是否是一个目录
System.out.println(file.isFile());//判断文件是否是一个普通文件
System.out.println("==========");
File file1 = new File("./test.txt");
System.out.println(file1.exists());//判断文件是否真实存在
System.out.println(file1.isDirectory());//判断文件是否是一个目录
System.out.println(file1.isFile());//判断文件是否是一个普通文件
}
}