1.什么是File类
Java是面对对象的语言,计算机中的内容不是文件即是文件夹。
获取File类有三种方式【构造方法】:
- File(String pathNmae);
根据对应的文件路径创建获取对应的File类对象,可以是文件,可以是文件夹。 - File(String parent, String child);
根据对应的父目录文件夹路径,以及子文件名或者子文件夹名,创建对应的File类对象 - File(File parent, String child);
根据对应的父目录文件夹File类对象,以及子文件名或者子文件夹名,创建对应File类对象
代码格式:
/*
* 创建File类对象过程
*/
public class Demo1 {
public static void main(String[] args) throws IOException {
//创建文件的三种方式
//操作文件必须带有文件的后缀名。如1.txt
File file = new File("F:\\test\\2.txt");
//separator 根据系统自动补齐分隔符
// File file1 = new File("F:" + File.separator + "test");
// File file2 = new File("F:\\test","1.txt");
// File file3 = new File(file, "aaa");
System.out.println(file.createNewFile());
System.out.println(file.createNewFile());
}
}
文件的路径属性分为:
1.相对路径
2.绝对路径。
路径分隔符:
windows是 / 或 \\
Linux UNIX macOS 分隔符是/
File.separatorChar() 该方法会根据当前系统来自动补齐不同的分隔符
2.创建文件和文件夹
创建文件方法:
boolean createNewFile();
该方法通过File类对象调用,创建对应File类对象中保存的路径的普通文件。
若返回false,可能的原因有:
1.路径不合法
2.对应的文件夹没有写入权限
3.对应的文件已经存在
代码格式:
//创建File类对象file
File file = new File("F:/test");
//创建File类对象file2,并创建保存的子文件
File file2 = new File(file, "file2.txt");
System.out.println(file2.createNewFile());
创建文件夹方法:
(1)boolean mkdir();
该方法也是通过File类对象调用,创建对应File类对象中保存路径的文件夹。
若返回false,可能的原因有:
1.路径不合法
2.对应的文件夹没有写入权限
3.对应的文件夹已经存在
(2)boolean mkdirs();
通过File类对象创建其中保存的文件目录的所有对应文件夹,包括中间路径
(3)boolean renameTo(File dest);
通过File类对象调用,转为目标File类对象dest
该方法可重命名文件/文件夹和移动。
代码:
//创建File类对象file3,并创建保存的文件夹
File file3 = new File(file, "bbb");
System.out.println(file3.mkdir());
//创建File类对象file4,并创建保存的文件夹目录
File file4 = new File("F:/test/a/s/d/f/1");
System.out.println(file4.mkdirs());
3.删除文件或文件夹
(1)boolean delete();
通过File类对象调用,删除对应的文件或者文件夹
【注意】
1.删除的文件或者文件夹都是直接抹掉数据,不是放入回收站
2.无法删除非空文件夹,文件夹中存在其他内容无法整体删除。
(2)void deleteOnExit();
程序退出时删除对应的文件或者文件夹
代码:
/*
* 删除文件或文件夹
*/
public class Demo3 {
public static void main(String[] args) throws IOException {
File file = new File("F:/test/删除该文件");
file.createNewFile();
//删除文件
System.out.println(file.delete());
File file2 = new File("F:/test/删除文件夹");
file2.mkdir();
//删除文件夹
System.out.println(file2.delete());
//deleteOnExit
File file3 = new File("F:/test/2.txt");
file3.deleteOnExit();
}
}
4.文件属性判断
- boolean isFile();
判断是否是一个普通文件 - boolean isDirctory();
判断是否是一个文件夹 - boolean isAbsolute();
判断是否使用了绝对路径 - boolean isHidden();
判断是否是隐藏文件 - boolean exists();
判断文件是否存在
代码:
//判断是否为文件后者文件夹
System.out.println(new File("F:/test/bbb").isFile());
System.out.println(new File("F:/test/bbb").isDirectory());
//判断不存在的文件和文件夹
//若不存在,都为false
System.out.println(new File("F:/test/qqq.zip").isFile());
System.out.println(new File("F:/test/qqq").isDirectory());
5.获取文件属性
没什么大用。因为不管文件是否存在,都能得到相应属性。因为返回的是创建对象中保存的地址和文件名。
1.String getPath();
获取File类对象保存的路径
2.String getName();
获取当前File类对象中保存的文件名或者文件夹名
3.String getParent();
获取当前File类对象对应文件或者文件夹的父目录路径
4.String getAbsolutePath();
获取当File类对象对应文件或者文件夹的绝对路径
其中也存在两个有用的方法:
1.long lastModified()
获取文件的最后一次修改时间,返回值是一个时间戳类型。
2.long length();
获取文件的大小,占用硬盘空间字节数。
代码:
/获取文件的路径和姓名
System.out.println(file.getPath());
System.out.println(file.getName());
//获取指定子集合(要头不要尾)
String str = "F:/test/bbb/1.zip";
System.out.println(str.substring(str.lastIndexOf('b') ));
//获取文件的父目录
System.out.println(file.getParent());
//获取指定子集和
System.out.println(str.substring(0, str.lastIndexOf('/')));
//获取文件的绝对路径
System.out.println("--------------------------");
System.out.println(new File("99999999").getAbsolutePath());
6.列表方法:
- static File[] listRoots();
通过File类调用,有且针对于Windows操作系统有效,获取当前电脑内所有根盘符对象,如果是Linux,UNIX,macOS是无效的。 - File[] listFiles();
通过File类对象调用,获取当前File类对象对应文件夹下的所有子文件或者子文件夹的File类对象数组 - String[] list();
通过File类对象调用,获取当前File类对象对应文件夹下的所有子文件或者子文件夹的String类型文件名或者文件夹名字数组
代码:
/*
* 获取文件的属性
*/
public class Demo6 {
public static void main(String[] args) {
File file = new File("F:/test/bbb/3.txt");
//file.lastModified()最后一次修改时间
long lastModified = file.lastModified();
System.out.println(lastModified);
//对于日期展示的处理方式
//SimpleDateFormat一个日期的规范格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
String format = simpleDateFormat.format(new Date(lastModified));
System.out.println(format);
//获取文件的大小(占用字节数)
//如果操作的是文件夹,返回0L
System.out.println(file.length());
System.out.println(new File("F:/test/bbb").length());
}
}
7. FilenameFilter文件名过滤器
功能:
【用于获取指定类型的文件】
/*
* 获取文件列表、文件名、增强for循环!!!
*/
public class Demo7 {
public static void main(String[] args) {
//获取当前电脑内所有根盘符对象
File[] listRoots = File.listRoots();
/*
* for(数据类型 变量名:数组/集合 ){
*
*
* }
*/
for (File file : listRoots) {
System.out.println(file);
}
System.out.println("-----------------");
//获取目标文件夹下的所有子文件和子文件夹
File file = new File("E:/java");
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {
System.out.println(file2);
}
//获取子文件或子文件夹的名字
System.out.println("=====================");
String[] list = file.list();
for (String string : list) {
System.out.println(string);
}
}
}