目录
1.概念
File是java.io.包下的类, File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)
注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据。
2.创建对象
注意事项:
File对象既可以代表文件、也可以代表文件夹。
File封装的对象仅仅是一个路径名,这个路径可以是存在的,也允许是不存在的。
绝对路径、相对路径
绝对路径:从盘符开始
相对路径:不带盘符,默认直接到当前工程下的目录寻找文件
package com.itheima.day09.teacher.file;
import java.io.File;
public class FileTest01 {
/*
目标:
掌握File对象的创建。
三个构造
File(String 目标文件的路径)
File(String parent,String chlid) 根据父路径和子路径 确定文件的路径
File(File parent,String child)根据父路径的对象形式和子路径 确定文件的路径
*/
public static void main(String[] args) {
// 想要将 E:\418\download\a.txt 文件表达成File对象
// \java中是转义字符 \\ 表示一个 \ 或者 / 表达 \
File file = new File("E:\\418\\download\\a.txt");
// new File("E:/418/download/a.txt");
//file 表示了 E:\418\download目录下的 a.txt文件
System.out.println(file);
System.out.println("文件大小:"+file.length());
//刚才封装的是文件 封装目录
// 目录--文件夹 --也是写路径
File dir = new File("E:\\418\\download");
System.out.println(dir);
System.out.println(dir.length());//程序中是 不去获取文件夹大小的...
//封装方式二
// 想要将 E:\418\download\a.txt 文件表达成File对象
File file2 = new File("E:\\418\\download", "a.txt");
System.out.println(file2);
System.out.println(file2.length());
//封装方式三
// 想要将 E:\418\download\a.txt 文件表达成File对象
File file3 = new File(dir, "a.txt");
System.out.println(file3);
System.out.println(file3.length());
//总结: File可以表达文件和文件夹
// File在封装的时候 不去考虑 文件是否真实存在
File file4 = new File("E:\\418\\download\\b.txt");
System.out.println(file4.length());
}
}
3.常用方法1:判断文件类型、获取文件信息
代码演示:
package com.itheima.day09.teacher.file;
import java.io.File;
public class Filetest03 {
/*
掌握
File的判断方法
*/
public static void main(String[] args) {
File file1 = new File("E:\\418\\download\\a.txt");
File file2 = new File("E:\\418\\download\\b.txt");
File file3 = new File("E:\\418\\download\\haha.txt");
// 请判断 file1 file2 file3是否都是真实存在的
// exists()
System.out.println("file1是否真实存在:"+file1.exists());//true
System.out.println("file2是否真实存在:"+file2.exists());//false
System.out.println("file3是否真实存在:"+file3.exists());//true
//判断 file1是文件还是文件夹? file3是文件还是文件夹?
// isFile()是否是文件 isDirectory()是否是文件夹
System.out.println("file1是文件吗:"+file1.isFile());//true
System.out.println("file1是文件夹吗:"+file1.isDirectory());//false
System.out.println("file3是文件吗:"+file3.isFile());//false
System.out.println("file3是文件夹吗:"+file3.isDirectory());//true
}
}
-------------------
package com.itheima.day09.teacher.file;
import java.io.File;
import java.text.SimpleDateFormat;
public class FileTest04 {
/*
掌握 File的获取方法
*/
public static void main(String[] args) {
File file1 = new File("E:\\418\\download\\a.txt");//绝对路径
File file2 = new File("day09\\src\\heihei.txt");//相对路径
//1:获取文件的名字 getName() 后缀名属于文件名一部分
System.out.println("file1的名字:"+file1.getName());//a.txt
System.out.println("file2的名字:"+file2.getName());//heihei.txt
//2: 获取 文件的字节数 length()
System.out.println("file1的字节数:"+file1.length());
System.out.println("file2的字节数:"+file2.length());
//3:获取文件的最后修改时间 long lastModified()获取的是毫秒值
long l = file1.lastModified();
//时间毫秒值 变成指定的 yyyy-MM-dd HH:mm:ss
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("file1的最后修改时间:"+sdf.format(l));
// 4:获取路径
// getPath() 获取封装路径 封装是什么得到是什么
System.out.println("file1的封装路径:"+file1.getPath());
System.out.println("file2的封装路径:"+file2.getPath());
// getAbsolutePath()获取绝对路径 带盘符的路径
System.out.println("file1的封装路径:"+file1.getAbsolutePath());
System.out.println("file2的封装路径:"+file2.getAbsolutePath());
}
}
4.常用方法2:创建文件、删除文件
File类创建文件的功能:
File类删除文件的功能:
注意:delete方法默认只能删除文件和空文件夹,删除后的文件不会进入回收站。
package com.itheima.day09.teacher.file;
import java.io.File;
import java.io.IOException;
public class FileTest05 {
/*
目标:
理解 文件(夹) 创建和删除
*/
public static void main(String[] args) throws IOException {
//在 E:\418\download 创建一个文件 abc.txt
// 先创建一个带有路径File对象
File file = new File("E:\\418\\download\\abc.txt");//路径写要创建文件的路径
//file 不是真实存在的
//创建文件 createNewFile()
boolean flag1 = file.createNewFile();//爆红是因为 当前叫编译期异常--跟外界因素
// 写的路径 目录是真的吗?不一定 外界因素 有没有权限呀?
System.out.println("文件是否创建成功了:"+flag1);
// 第一次执行 结果 true 已经有了 就是false
// 在 E:\418\download 创建一个文件夹 418学生档案 一层目录
// 先创建带有 路径的 File对象
File dir = new File("E:\\418\\download\\418学生档案");
//创建文件夹 mkdir()
System.out.println("文件夹是否创建成功:"+dir.mkdir());//创建单级目录
// 在 E:\418\download 创建一个文件夹 418组长\刘靖轩 两层目录
File dir2 = new File("E:\\418\\download\\418组长\\刘靖轩");
System.out.println("创建多层目录:"+dir2.mkdirs());//创建多级目录
// 删除文件(夹) delete
System.out.println(file.delete());//不走回收站 慎用
System.out.println(dir.delete());//删除单级
System.out.println(dir2.delete());//删除多级--其实是单级的
File dirs = new File("E:\\418\\download\\搞笑");
System.out.println(dirs.delete());
// 注意 delete不能删除 非空文件夹
}
}
5.常用方法3:遍历文件夹
File类提供的遍历文件夹的功能
package com.itheima.day09.teacher.file;
import java.io.File;
public class FileTest06 {
/*
目标
掌握 遍历文件夹的方法
*/
public static void main(String[] args) {
File dir = new File("D:/");
//当前目录下 有很多文件和文件夹 我想获取怎么获取呢
// String[] list() 获取的当前目录下 每个文件及文件夹的名字String
String[] list = dir.list();
//先判断是否为null以及是否有内容
for (String s : list) {
System.out.println("子文件(夹)的名字:"+s);
}
System.out.println("===================");
//File[] listFiles() 获取当前目录下 每个文件及文件夹的对象形式File
File[] files = dir.listFiles();
for (File file : files) {
System.out.println("查看一下每个文件的绝对路径:"+file.getAbsolutePath());
}
}
}