文件的基本定义:
文件:(狭义)针对硬盘这种持久化存储的I/O设备,当我们想要进⾏数据保存时, 往往不是保存成⼀个整体,⽽是独⽴成⼀个个的单位进⾏保存,这个独⽴的单位就被抽象成⽂件的概 念,就类似办公桌上的⼀份份真实的⽂件⼀般。

树型结构组织和⽬录:随着⽂件越来越多,对⽂件的系统管理也被提上了⽇程,如何进⾏⽂件的组织呢,⼀种合乎⾃ 然的想法出现了,就是按照层级结构进⾏组织⸺⸺也就是我们数据结构中学习过的树形结构。这样, ⼀种专⻔⽤来存放管理信息的特殊⽂件诞⽣了,也就是我们平时所谓⽂件夹(folder)或者⽬录 (directory)的概念。


⽂件路径(Path):绝对路径和相对路径
绝对路径:⼀直到达的结点的路径所 描述,⽽这种描述⽅式就被称为⽂件的绝对路径(absolutepath)。
相对路径:除了可以从根开始进⾏路径的描述,我们可以从任意结点出发,进⾏路径的描述,⽽这种描述⽅式就 被称为相对路径(relativepath)
Java中操作⽂件
Java中通过java.io.File 类来对⼀个⽂件(包括⽬录)进⾏抽象的描述。注意,有File对象, 并不代表真实存在该⽂件。
File概述
File 类中的常⻅属性、构造⽅法和⽅法
属性
| 修饰符及类型 | 属性 | 说明 |
| staticString | pathSeparator | 依赖于系统的路径分隔符,String 类型的表⽰ |
| staticchar | pathSeparator | 依赖于系统的路径分隔符,char类 型的表⽰ |
构造⽅法
| 方法 | 说明 |
| File(Fileparent,Stringchild) | 根据⽗⽬录+孩⼦⽂件路径,创建⼀个新的File实例 |
| File(Stringpathname) | 根据⽂件路径创建⼀个新的File实例,路径可以是绝 对路径或者相对路径 |
| File(Stringparent,Stringchild) | 根据⽗⽬录+孩⼦⽂件路径,创建⼀个新的File实 例,⽗⽬录⽤路径表⽰ |
⽅法
| 修饰符及返回值类型 | ⽅法签名 | 说明 |
| String | getParent() | 返回File对象的⽗⽬录⽂件路径 |
| String | getName() | 返回FIle对象的纯⽂件名称 |
| String | getPath() | 返回File对象的⽂件路径 |
| String | getAbsolutePath() | 返回File对象的绝对路径 |
| String | getCanonicalPath() | 返回File对象的修饰过的绝对路径 |
| boolean | exists() | 判断File对象描述的⽂件是否真实 存在 |
| boolean | isDirectory() | 判断File对象代表的⽂件是否是⼀ 个⽬录 |
| boolean | isFile() | 判断File对象代表的⽂件是否是⼀ 个普通⽂件 |
| boolean | createNewFile() | 根据File对象,⾃动创建⼀个空⽂ 件。成功创建后返回true |
| boolean | delete() | 根据File对象,删除该⽂件。成功 删除后返回true |
| void | deleteOnExit() | 根据File对象,标注⽂件将被删 除,删除动作会到JVM运⾏结束时 才会进⾏ |
| String[] | list() | 返回File对象代表的⽬录下的所有 ⽂件名 |
| File[] | listFiles() | 返回File对象代表的⽬录下的所有 ⽂件,以File对象表⽰ |
| boolean | mkdir() | 创建File对象代表的⽬录 |
| boolean | mkdirs() | 创建File对象代表的⽬录,如果必 要,会创建中间⽬录 |
| boolean | renameTo(Filedest) | 进⾏⽂件改名,也可以视为我们平 时的剪切、粘贴操作 |
| boolean | canRead() | 判断⽤⼾是否对⽂件有可读权限 |
| boolean | canWrite() | 判断⽤⼾是否对⽂件有可写权限 |
代码⽰例
1.
package io;
import java.io.File;
import java.io.IOException;
public class Demo1 {
public static void main(String[] args) throws IOException {
//File file = new File("D:\\\\作业\\\\BT\\\\EE\\\\java图书系统项目\\\\1.txt"); // 转义字符\\\\表示\\ 或者直接一个/
//写成相对路径的形式
File file = new File("./1.txt");
//获取当前文件所在的目录
System.out.println(file.getParent());
//获取到当前的文件名
System.out.println(file.getName());
//获取当前文件的路径
System.out.println(file.getPath());
//获取当前文件的绝对路径
System.out.println(file.getAbsolutePath());
//获取文件整理后的绝对路径
System.out.println(file.getCanonicalPath());
}
}

2.
package io;
import java.io.File;
import java.io.IOException;
public class Demo2 {
public static void main(String[] args) throws IOException {
File file = new File("./1.txt");
System.out.println(file.exists());
//判定该文件是否为普通文件 如果文件不存在 返回false
System.out.println(file.isFile());
//判定该文件是否为 目录 如果目录不存在 返回false
System.out.println(file.isDirectory());
//创建一个空白的普通文件 会抛出异常
// 1.创建文件不一定总是成功的 所以会抛出异常
//2.针对文件所在的目录,没有访问权限 所以可能抛出异常
file.createNewFile();
}
}

3.
package io;
import java.io.File;
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
File file = new File("./1/txt");
//对文件进行删除
boolean result = file.delete();
System.out.println("result = " + result);
//不是立即删除,而是等当前程序结束再触发删除
// file.deleteOnExit();
//
// Scanner scanner = new Scanner(System.in);
// scanner.next();
}
}

4.
package io;
import java.io.File;
import java.util.Arrays;
public class Demo4 {
public static void main(String[] args) {
File file = new File("./");
String[] list = file.list();
System.out.println(Arrays.toString(list));
//通过listFiles 列出目录下的内容
//每个元素,就是当前目录下每个文件/目录的 File对象
File[] listFiles = file.listFiles();
System.out.println(Arrays.toString(listFiles));
}
}

5.
package io;
import java.io.File;
//public class Demo5 {
// public static void main(String[] args) {
// File file = new File("111");
// mkdir一次只能创建一级目录
// boolean result = file.mkdir();
// System.out.println(result);
// //file.delete();
// }
//}
public class Demo5 {
public static void main(String[] args) {
File file = new File("111/222/333");
//mkdirs可以创建多级目录
boolean result = file.mkdirs();
System.out.println(result);
file.delete();
}
}


6.
package io;
import java.io.File;
public class Demo6 {
public static void main(String[] args) {
//1.重命名
//Src是source 缩写
//File fileSrc = new File("./1.txt");
//dest是 destination缩写
//File fileDest = new File("./2.txt");
//把1.txt 重命名为 2.txt
//fileSrc.renameTo(fileDest);
//fileDest.renameTo(fileSrc);
//也可以把1.txt重命名为一个文件夹
//File fileDest1 = new File("./2222");
//fileSrc.renameTo(fileDest);
//2,针对移动
//把dest路径写到其他路径下
File fileSrc = new File("./1.txt");
File fileDest = new File("./111/1.txt");
fileSrc.renameTo(fileDest);
}
}




