1.1 概述
java.io.File
类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
/*
* java把电脑中的文件和文件夹封装为类一个file类,我们可以使用file类对文件夹进行操作
* 我们可以使用file类对方法
* 创建一个文件/文件夹
* 删除文件
* 获取文件
* 判断文件是否存在
* 对文件进行遍历
* 重点:
* file:文件
* directory:文件夹
* path:路径
String pathSeparator = File.pathSeparator;
System.out.println(pathSeparator);//路径分隔符 windows:分号";" Linux:冒号":"
String separator= File.separator;
System.out.println(separator);//文件名称分隔符 windows :\ linux:/
//操作路径:
// C:\roderick\study\a.txt Windows
// C:/roderick/study/a.txt Linux
//-> "C:"+File.separator+"roderick"+File.separator+"a.txt" 通用
/*
* 路径:
* 绝对路径:完整路径
* 以盘符开始对路径 -> c:\\a.txt(windows)
* 相对路径:简化路径
* 相对与当前项目的根目录 省略项目根目录
* 注意:
* 路径不区分大小写
* 路径中的文件名称分隔符-> \\ (windows 转义字符,需要写两个\) / (Linux)
* */
1.2 构造方法
public File(String pathname)
:通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(String parent, String child)
:从父路径名字符串和子路径名字符串创建新的 File实例。public File(File parent, String child)
:从父抽象路径名和子路径名字符串创建新的 File实例。- 构造举例,代码如下:
/*
File类构造方法
*/
//show01();
//show02("/User","/a.txt");
show03();
}
/*
* File(File parent,String child)
* 父路径变成了File类型
* 父路径可以使用File方法对路径进行一些操作,再使用路径创建对象*/
private static void show03() {
File parent=new File("/User");
File file =new File(parent,"/hello.txt");
System.out.println(file);// /User/hello.txt
}
/*
* File(String parent,String child) 根据parent路径名字符串和child路径名字符串创建一个新的File实例
* 参数:吧路径分成两部分
* String parent 父路径
* String child 子路径
* 好处:
* 父路径和子路径可以单独书写,使用起来灵活,父路径和子路径都可以变化*/
private static void show02(String parent,String child) {
File file=new File(parent,child);
System.out.println(file);// /User/a.txt
}
/*File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新File实例*/
private static void show01(){
File f1=new File("/Users/roderickkk/学习/Java代码/Java-project/level2-code/src/code/day08File/Demo01File/a.txt");
System.out.println(f1);//打印了路径, 重写了toString方法
File f2=new File("/Users/roderickkk/学习/Java代码/Java-project/level2-code/src/code/day08File/Demo01File");
System.out.println(f2);
File f3=new File("b.txt");//相对路径
System.out.println(f3);//b.txt
}
1.3 常用方法
获取功能的方法
public String getAbsolutePath()
:返回此File的绝对路径名字符串。public String getPath()
:将此File转换为路径名字符串。public String getName()
:返回由此File表示的文件或目录的名称。public long length()
:返回由此File表示的文件的长度。
方法演示,代码如下: ```java public class FileGet { public static void main(String[] args) {File f = new File("d:/aaa/bbb.java");
System.out.println("文件绝对路径:"+f.getAbsolutePath());
System.out.println("文件构造路径:"+f.getPath());
System.out.println("文件名称:"+f.getName());
System.out.println("文件长度:"+f.length()+"字节");
File f2 = new File("d:/aaa");
System.out.println("目录绝对路径:"+f2.getAbsolutePath());
System.out.println("目录构造路径:"+f2.getPath());
System.out.println("目录名称:"+f2.getName());
System.out.println("目录长度:"+f2.length());
} } 输出结果: 文件绝对路径:d:\aaa\bbb.java 文件构造路径:d:\aaa\bbb.java 文件名称:bbb.java 文件长度:636字节
目录绝对路径:d:\aaa 目录构造路径:d:\aaa 目录名称:aaa 目录长度:4096
> API中说明:length(),表示文件的长度。但是File对象表示目录,则返回值未指定。
<a name="1b076efb"></a>
#### 绝对路径和相对路径
- **绝对路径**:从盘符开始的路径,这是一个完整的路径。
- **相对路径**:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。
```java
public class FilePath {
public static void main(String[] args) {
// D盘下的bbb.java文件
File f = new File("D:\\bbb.java");
System.out.println(f.getAbsolutePath());
// 项目下的bbb.java文件
File f2 = new File("bbb.java");
System.out.println(f2.getAbsolutePath());
}
}
输出结果:
D:\bbb.java
D:\idea_project_test4\bbb.java
判断功能的方法
public boolean exists()
:此File表示的文件或目录是否实际存在。public boolean isDirectory()
:此File表示的是否为目录。public boolean isFile()
:此File表示的是否为文件。
方法演示,代码如下:
File f1=new File("/Users/roderickkk/Desktop/4.docx");
System.out.println(f1.exists());//true
File f2=new File("/Users/roderickkk/Desktop");
System.out.println(f1.isDirectory());//false 该路径是文件而不是目录
System.out.println(f2.isDirectory());//true
System.out.println(f1.isFile());//true
System.out.println(f2.isFile());//false 该路径是文件夹
创建删除功能的方法
public boolean createNewFile()
:当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。public boolean delete()
:删除由此File表示的文件或目录。public boolean mkdir()
:创建由此File表示的目录。public boolean mkdirs()
:创建由此File表示的目录,包括任何必需但不存在的父目录。
方法演示,代码如下:
public class FileCreateDelete {
public static void main(String[] args) throws IOException {
// 文件的创建
//createNewFile声明抛出了IOException异常
File f1=new File("/Users/roderickkk/学习/Java代码/Java-project/level2-code/src/code/day08File/Demo01File/1.txt");
System.out.println(f1.exists());//false
boolean b1= f1.createNewFile();
System.out.println(b1);//true
System.out.println(f1.exists());//true
//创建文件夹
/*
* public boolean mkdir(): 创建单级空文件夹
* public boolean mkdirs(): 既可以创建单级也可以创建多级空文件夹*/
File f2=new File("/Users/roderickkk/Desktop/newFile");
boolean b2=f2.mkdir();
System.out.println("b2:"+b2);//b2:true
File f3=new File("/Users/roderickkk/Desktop/newFile/newFile2/newFile3");
boolean b3=f3.mkdirs();//创建多级文件夹
System.out.println("b3:"+b3);//b3:true
// 文件的删除
System.out.println(f.delete());// true
// 目录的删除
//删除文件夹(文件夹中不能有东西)
File f4=new File("/Users/roderickkk/Desktop/newFile/newFile2/newFile3");
boolean b4= f4.delete();
System.out.println("b4:"+b4);//b4:true
}
}
API中说明:delete方法,如果此File表示目录,则目录必须为空才能删除。
1.4 目录的遍历
public String[] list()
:返回一个String数组,表示该File目录中的所有子文件或目录。public File[] listFiles()
:返回一个File数组,表示该File目录中的所有的子文件或目录
//遍历文件夹(能够显示隐藏文件夹) 返回一个String数组,表示该目录下的所有子文件或目录
String[] arr=f1.list();
for (String s : arr) {
System.out.println(s);
}
//listFiles 返回一个File类型的数组
File[] listFile = f1.listFiles();
for (File file : listFile) {
System.out.println(file); //打印路径
}