File类
表示一个文件或者一个文件夹的路径的对象
路径
用于描述文件或者文件夹路径的字符串
分类
相对路径:相对某个路径而言
绝对路径:带盘符的,从根目录开始的路径(Linux中是以 / 表示根)
File类的方法
File类的构造方法
描述的路径都是父级和子级路径的拼接
File(String path)把字符串的路径,封装成一个File对象
File(String parent,String path)将父级路径和子级路径封装成一个File对象
File(File parent,String child)将父级File对象路径和子级路径封装成一个File对象
File类的成员方法
创建
创建文件
Boolean createNewFile()创建当前File对象所描述的路径的文件
File f = new File("day01/demo01.java");
f.createNewFile();
创建文件夹
boolean mkdir()创建文件夹,如果父级路径不存在,不给创建
boolean mkdirs()创建文件夹,如果父级路径不存在,自动创建
删除
detele()
删除调用者,可删除文件或者文件夹
删除文件夹
只能删除空文件夹
如果要删除有文件的文件夹
①可以先把下面的文件遍历删除之后,在删除文件夹
②1、递归编程
2、自己创建一个栈数据结构,将所有内容往栈中压,删除顶端的内容
3、使用工具类(常用)
重命名
renameTo(File dest)将调用者File对象的路径,修改为参数指定的目标路径
特点
1、如果只修改了文件的名称,而没有修改所在目录的名称,那么就是重命名
File b = new File("a/b.txt");
File x = new File("a/x.txt");
b.renameTo(x);
2、如果修改了所在目录的路径,那么就是剪切
File b = new File("b");
File x = new File("a/x.txt");
File result = new File(b, "x.txt");
x.renameTo(result);
注意
调用者和参数,都是File对象
判断
1、exists()
判断该路径的文件或者文件夹是否存在
2、isDirectory()
判断是否是一个文件夹
3、isFile()
判断是否是一个文件
4、isAbsolute()
判断该对象是否是一个绝对路径
5、isHidden()
判断该对象是否是一个隐藏路径
获取
1、getAbsolutePath()
获取当前路径的绝对路径表示形式
2、getPath()
获取该路径File对象的构造方法中的参数
3、getName()
获取该路径的最简单名称
4、getFreeSpace()
获取当前磁盘中的可用空间
5、getUsableSapce()
获取当前磁盘中可以用于jvm的空间
6、getTotalSpace()
获取当前磁盘中总共的空间大小
7、getParent()
获取当前路径的父级路径
8、length()
只能针对文件使用,可以返回文件的大小字节数
9、lastModified()
获取该文件最后修改时间的毫秒值
10、String[] list()
1、只能针对文件夹来使用
2、将调用者文件夹中的所有文件和文件夹的最短名称,返回到字符串数组中
11、File[] listFiles()
1、只能针对文件夹来使用
2、将调用者文件夹中的所有文件和文件夹的File对象,返回到File数组中
练习
一、在D盘下创建一个名为ccc的文件夹,要求如下:
1.ccc文件夹中要求包含bbb子文件夹
2.bbb子文件夹要求包含aaa文件夹
public static void main(String[] args) {
File f = new File("D:\\ccc");
f.mkdir();
File f1 = new File(f,"bbb");
f1.mkdir();
File f2 = new File(f1,"aaa");
f2.mkdir();
File ff = new File("D:/ccc/bbb/aaa");
ff.mkdir();
}
二、获取D盘aaa文件夹中b.txt文件的文件名,文件大小,文件的绝对路径和父路径等信息,并将信息输出在控制台。
public static void main(String[] args) {
File f = new File("D:\\aaa/b.txt");
System.out.println(f.getName());//文件名
System.out.println(f.length());//文件大小
System.out.println(f.getAbsolutePath());//绝对路径
File f1 = f.getParentFile();
System.out.println(f1);
File f2 = f1.getParentFile();
System.out.println(f2);
// System.out.println(f.getParent());
// System.out.println(f.getPath());
}
三、判断是否是文件、文件夹
1.判断File对象是否是文件,是文件则输出:xxx是一个文件,否则输出:xxx不是一个文件。
2.判断File对象是否是文件夹,是文件夹则输出:xxx是一个文件夹,否则输出:xxx不是一个文件夹。(xxx是文件名或文件夹名)
@SuppressWarnings("resource")
public static void main(String[] args) {
File f1 = new File("D:\\");
Scanner sc = new Scanner(System.in);
System.out.println("请输入要判断是否是文件或者文件夹的名字,enter结束:");
String str = sc.nextLine();
File f = new File(f1,str);
if(f.exists()) {
System.out.println(str + (f.isDirectory() ? "是" : "不") + "文件夹");
}else {
//str不存在就添加后缀,再次判断是否是文件
f = new File(f1,str + ".txt");
System.out.println(str + (f.exists() ? "是" : "不是") + "文件,也不是文件夹");
}
}
四、键盘录入一个文件路径,根据文件路径创建文件对象,判断是文件还是文件夹
如果是文件,则输出文件的大小
如果是文件夹,则计算该文件夹下所有文件大小之和并输出(不包含子文件夹)。
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
int sum = 0;
Scanner sc = new Scanner(System.in);
String str0 = sc.nextLine();
File ff = new File(str0);
if(ff.exists()) {
System.out.println("是文件" + (ff.isFile() ? "" : "夹"));
if(ff.isFile()) {
System.out.println(ff.length());
}else {
File[] f = ff.listFiles();
for (File file : f) {
if(file.isFile()) {
sum += file.length();
}
}
System.out.println(sum);
}
} else {
System.out.println("文件路径不正确");
}
}
PS
1)【】、加粗表示重点;删除线表示已解决
2)学习记录实现,如有不妥还望指正