File类
静态成员变量:
static String pathSeparator:与系统有关的路径分隔符号(Windows分号(;)linux冒号(:))
statci char pathSeparator:与系统有关的路径分隔符号
static String separator:与系统有关的默认名称分隔符(Windows反斜杠(\)linux正斜杠(/))
static String separator:与系统有关的默认名称分隔符
注意:这些分隔符号在编程的时候都不应该写死了,用法哦分隔符号调用这两个即可,交给JVM决定是正斜杠还是反斜杠
路径
- 绝对路径:以盘符开始的,以根目录开始的
- 相对路径相:相对于当前项目的根目录
File类的构造方法
- File(String pathname):通过给定路径名创建一个File类的实例
参数pathname:
- 可以以文件结尾,也可以以文件夹结尾
- 路径可以是相对路径也可以是绝对路径
- 路径可以存在,也可以不存在
- 创建File对象,只是将路径名字符串pathname封装为File对象,不考虑路径的真假情况
- File(String parent, String child):
参数:路径为两部分,父路径和子路径
- 使用起来灵活,两个都可以变化
File(File parent, String child):
参数:和上一个构造方法类路径分为两部分,但是第一个parent是File类型的
成员方法:
1. 与获取功能相关的方法
成员方法 | 作用 |
---|---|
public String getAbsolutePath() | 返回该File对象的绝对路径,不管它是由相对路径还是绝对路径构造的 |
public String getPath() | 将该File对象转化为路径名字符串,获取的就是构造方法中的路径 |
public String getName() | 返回由此File对象表示的文件或者目录名称 |
public long length() | 返回由此File对象表示的文件的长度(字节为单位,不能获取文件夹大小,返回0) |
package cn.zhuobo.day13.file;
import java.io.File;
public class Demo01File {
public static void main(String[] args) {
String s = File.pathSeparator;
System.out.println(s);
System.out.println(File.separator);
System.out.println(File.separator);
File file = new File("/home/zhuobo/Desktop");
File f1 = new File("/home/zhuobo/Desktop/b.txt");
System.out.println(f1.getAbsoluteFile());
System.out.println(f1.getPath());//
File f2 = new File("a.txt");// 相对当前项目的根目录而言
System.out.println(f2.getAbsoluteFile());// /home/zhuobo/Documents/java_pragram/basic-code/a.txt
System.out.println(f2.getPath());
System.out.println(f1.getName());// b.txt
System.out.println(f2.getName());// a.txt
System.out.println(f1.length());// 630
System.out.println(f2.length());// 不存在的文件返回0
}
}
2. 与判断相关的方法
成员方法 | 作用 |
---|---|
public boolean exists() | 判断File对象表示稳的文件或者目录是否存在 |
public boolean isDirectory() | 判断File对象是否是目录 |
public boolean isFile() | 判断File对象是否为文件 |
package cn.zhuobo.day13.file;
import java.io.File;
public class Demo02File {
public static void main(String[] args) {
File f1 = new File("/home/zhuobo/Desktop/b.txt");
System.out.println(f1.exists());
if(f1.exists()) {
System.out.println(f1.isDirectory());
System.out.println(f1.isFile());
}
}
}
3. 与创建删除相关的方法
成员方法 | 作用 |
---|---|
public boolean createNewFile() | 当且仅当具有该名称的文件不存在时,创建一个新的空文件,路径不存在就抛出异常 |
public boolean delete() | 删除后由此File对象表示的文件或者目录,直接删除,不经过回收站 |
public boolean mkdir() | 创建此File对象表示的目录 |
public boolean midirs() | 创建由此File对象表示的目录,包括任何必须但是不存在的父目录 |
package cn.zhuobo.day13.file;
import java.io.File;
import java.io.IOException;
public class Demo03File {
public static void main(String[] args) throws IOException {
// 创建文件
File file = new File("/home/zhuobo/Desktop/a.txt");
System.out.println(file.exists());// 文件路径是一个不存在的文件
System.out.println(file.createNewFile());// 创建一个文件 true,文件不存在就创建,否则返回false
System.out.println(file.exists());// 现在该文件存在了 true
// 创建目录
File file1 = new File("/home/zhuobo/Desktop/aaa");
boolean b = file1.mkdir();
File file2 = new File("/home/zhuobo/Desktop/saa/bbb/ccc");
file2.mkdirs();// 创建多级文件夹
file.delete();// 直接删除,不经过回收站
file1.delete();
}
}
4. 遍历目录的方法
成员方法 | 作用 |
---|---|
public String[] list() | 返回一个String数组,表示该File目录中的所有子文件或者目录,可以获得隐藏的文件,目录,如果该File表示的文件不存在或者不是一个目录,那么就会抛出空指针异常 |
public File[] listFiles() | 返回一个File数组,表示该File目录中所有的子文件或者目录,作用和上一个方法类似,只是封装为File对象 |
package cn.zhuobo.day13.file;
import java.io.File;
public class Demo04File {
public static void main(String[] args) {
File file1 = new File("/home/zhuobo/Desktop");
String[] str = file1.list();
for (String s : str) {
System.out.println(s);
}
System.out.println("=====================================");
File[] files = file1.listFiles();
for (File file : files) {
System.out.println(file);
}
}
}
.a.cpp.swp
.a.cpp.swo
b.txt
saa
=====================================
/home/zhuobo/Desktop/.a.cpp.swp
/home/zhuobo/Desktop/.a.cpp.swo
/home/zhuobo/Desktop/b.txt
/home/zhuobo/Desktop/saa