File类
概念
文件(File)和目录(文件夹 Folder)路径名的抽象表示形式。
文件指的是一个路径的抽象表现形式
静态常量成员
static String pathSeparator
与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
static char pathSeparatorChar
与系统有关的路径分隔符。
static String separator
与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
static char separatorChar
与系统有关的默认名称分隔符。
构造方法
public File(String pathname) pathname文件路径名
public File(String parent,String child) 父路径名 子路径名
public File(File parent,String child) 通过父文件对象和子文件名称构造文件对象
示例代码如下:
public class FileDemo {
public static void main(String[] args) {
System.out.println(File.separator);
System.out.println(File.pathSeparator);
System.out.println("D:" + File.separator + "JavaSE"+ File.separator +"day20");
System.out.println("D:\\JavaSE\\day20");
// public File(String pathname) pathname文件路径名
File file = new File("D:\\a.txt");
System.out.println(file);
// public File(String parent,String child) 父路径名 子路径名
File file2 = new File("D:", "a.txt");
System.out.println(file2);
// public File(File parent,String child) 通过父文件对象和子文件名称构造文件对象
File file3 = new File(new File("D:"), "a.txt");
System.out.println(file3);
}
}
文件的基本操作
1.文件的创建
boolean createNewFile() : 若文件不存在则创建文件
注意:
- 1.该方法会抛出一个IOException异常,该异常是一个编译时异常,必须处理
- 2.该方法创建的是文件,而不是文件夹
- 3.如果文件已经创建,就不会再创建了,返回false
File file = new File("D:\\JavaSE\\day\\resource\\a.txt");
System.out.println("createNewFile():" + file.createNewFile())
boolean mkdir()
注意:
- 1.该方法没有异常
- 2.该方法创建的是文件夹
- 3.如果文件夹已经创建,就不会再创建了,返回false
File file2 = new File("D:\\JavaSE\\day\\resource\\Demo");
System.out.println("mkdir():" + file2.mkdir());
boolean mkdirs()
注意:
- 1.该方法没有异常
- 2.该方法创建的是连续的文件夹
- 3.如果文件夹已经创建,就不会再创建了,返回false
File file4 = new File(file2, "aaa\\bbb\\ccc");
System.out.println("mkdirs():" + file4.mkdirs());
2.文件的删除
boolean delete()
删除此抽象路径名表示的文件或目录。
注意:
- 1.既可以删除文件,也可以删除文件夹
- 2.删除文件夹,文件夹必须是空的
public class FileDemo {
public static void main(String[] args) {
File file = new File("D:\\JavaSE\\day\\resource\\a.txt");
System.out.println("delete:" + file.delete());
File file2 = new File("D:\\JavaSE\\day\\resource\\Demo\\aaa\\bbb\\ccc");
System.out.println("delete:" + file2.delete());
// 删除aaa文件夹
File file3 = new File("D:\\JavaSE\\day\\resource\\Demo\\aaa");
System.out.println("delete:" + file3.delete());
}
}
3.修改功能
public boolean renameTo(File dest) 重命名为dest
public class FileDemo {
public static void main(String[] args) {
File file = new File("a.txt");
boolean result = file.renameTo(new File("b.txt"));
System.out.println(result);
}
}
4.文件的判断功能
public boolean isFile() 是否文件
public boolean isDirectory() 是否目录
public boolean canRead() 是否可读
public boolean canWrite() 是否可写
public boolean exists() 是否存在
public boolean isHidden() 是否隐藏
public long length() 长度
public String getAbsolutePath() 绝对路径
public String getPath() 定义的路径
public String getName() file名字
public long lastModified() 最后一次修改时间
示例代码如下:
public class FileDemo {
public static void main(String[] args) {
File file = new File("b.txt");
System.out.println("isFile:" + file.isFile()); // true
System.out.println("isDirectory:" + file.isDirectory()); // false
System.out.println("canRead:" + file.canRead()); // true
System.out.println("canWrite:" + file.canWrite()); // true
System.out.println("exists:" + file.exists()); // true
System.out.println("isHidden:" + file.isHidden()); // false
System.out.println("length:" + file.length()); // 4
System.out.println("getAbsolutePath:" + file.getAbsolutePath()); // D:\JavaSE\CodeLibrary\chapter12_iodemo\b.txt
System.out.println("getPath:" + file.getPath()); // b.txt
System.out.println("getName:" + file.getName()); // b.txt
System.out.println("lastModified:" + file.lastModified()); // ? 1525577487444 1525577529998
Date date = new Date(1525577529998L);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
String dateStr = sdf.format(date);
System.out.println(dateStr); // 2019-04-30 11:32:09
}
}
5.文件的遍历功能
public String[] list() 返回file下的文件和目录名称(字符串)
public File[] listFiles() 返回file下的文件和目录(文件)
public class FileDemo {
public static void main(String[] args) {
File file = new File("D:\\JavaSE\\CodeLibrary\\chapter12_iodemo\\src\\com\\sxt\\filedemo");
String[] fileList = file.list();
for (String fileName : fileList) {
System.out.println(fileName);
}
System.out.println("-----------------------------------------");
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f.getAbsolutePath());
System.out.println(f.getName());
System.out.println(f.length());
System.out.println("-------------");
}
}
}
public String[] list(FilenameFilter filter) 根据filter过滤返回file下文件和目录名称
public class FileDemo {
public static void main(String[] args) {
File file = new File("D:\\21321312312313123\\JavaSE\\chapter03_分支语句\\课堂案例\\键盘录入对象Scanner");
String[] fileList = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String fileName) {
// System.out.println(dir);
// System.out.println("------");
// System.out.println(name);
// File file = new File(dir, fileName);
// D:\21321312312313123\JavaSE\chapter03_分支语句\课堂案例\键盘录入对象Scanner\ScannerDemo01.class
/*if (file.getName().endsWith(".java")) {
return true;
} else {
return false;
}*/
// return (file.getName().endsWith(".java")) ? true : false;
return new File(dir, fileName).getName().endsWith(".class");
}
});
for (String fileName : fileList) {
System.out.println(fileName);
}
}
}
public File[] listFiles(FileFilter filter) 根据filter过滤返回file下文件和目录
public class FileDemo {
public static void main(String[] args) {
File file = new File("D:\\21321312312313123\\JavaSE\\chapter03_分支语句\\课堂案例\\键盘录入对象Scanner");
File[] files = file.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.getName().endsWith(".java");
}
});
for (File f : files) {
System.out.println(f.getAbsolutePath());
}
}
}