1. File类的理解
- File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)
- File类声明在java.io包下
- File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成
- 后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的”终点”
2. File的实例化
2.1 常用构造器
File(String filePath) File(String parentPath,String childPath) File(File parentFile,String childPath)
@Testpublic void test1() {// 构造器 1// 相对路径File file = new File("hello.txt");// 绝对路径File file1 = new File("D:\\workspace_idea\\TestCode\\JavaSE\\hi.txt");System.out.println(file);System.out.println(file1);// 构造器 2File file2 = new File("D:\\workspace_idea\\TestCode", "JavaSE");System.out.println(file2);// 构造器 3File file3 = new File(file2, "hi.txt");System.out.println(file3);}
2.2 路径的分类
相对路径:相较于某个路径下,指明的路径。 绝对路径:包含盘符在内的文件或文件目录的路径
说明:
IDEA中: 如果开发使用JUnit中的单元测试方法测试,相对路径即为当前Module下。 如果使用main()测试,相对路径即为当前的Project下。
Eclipse中: 不管使用单元测试方法还是使用main()测试,相对路径都是当前的Project下。
2.3 路径分隔符
windows和DOS系统默认使用“\”来表示 UNIX和URL使用“/”来表示
3. File类的常用方法

@Test
public void test2() {
File file1 = new File("hello.txt");
File file2 = new File("d:\\io\\hi.txt");
System.out.println(file1.getAbsolutePath()); // 获取绝对路径
System.out.println(file1.getPath()); // 获取路径
System.out.println(file1.getName()); // 获取名称
System.out.println(file1.getParent()); // 获取上层文件目录路径。若无,返回null
System.out.println(file1.length()); // 获取文件长度(即:字节数)。不能获取目录的长度
System.out.println(new Date(file1.lastModified())); // 获取最后一次的修改时间,毫秒值
System.out.println();
System.out.println(file2.getAbsolutePath());
System.out.println(file2.getPath());
System.out.println(file2.getName());
System.out.println(file2.getParent());
System.out.println(file2.length());
System.out.println(file2.lastModified());
}
@Test
public void test3() {
File file = new File("D:\\workspace_idea\\TestCode\\JavaSE");
String[] strings = file.list();
for (String s : strings) {
System.out.println(s);
}
System.out.println();
File[] listFiles = file.listFiles();
for (File f : listFiles) {
System.out.println(f);
}
}
@Test
public void test4() {
File file1 = new File("hello.txt");
File file2 = new File("D:\\hi.txt");
System.out.println(file1.renameTo(file2));
}

@Test
public void test5() {
File file1 = new File("hello.txt");
System.out.println(file1.isDirectory());
System.out.println(file1.isFile());
System.out.println(file1.exists());
System.out.println(file1.canRead());
System.out.println(file1.canWrite());
System.out.println(file1.isHidden());
System.out.println();
File file2 = new File("d:\\io");
file2 = new File("d:\\io1");
System.out.println(file2.isDirectory());
System.out.println(file2.isFile());
System.out.println(file2.exists());
System.out.println(file2.canRead());
System.out.println(file2.canWrite());
System.out.println(file2.isHidden());
}

/*
创建硬盘中对应的文件或文件目录
public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false
public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。
public boolean mkdirs() :创建文件目录。如果此文件目录存在,就不创建了。如果上层文件目录不存在,一并创建
删除磁盘中的文件或文件目录
public boolean delete():删除文件或者文件夹
删除注意事项:Java中的删除不走回收站。
*/
@Test
public void test6() throws IOException {
File file = new File("hello.txt");
if (!file.exists()) {
file.createNewFile();
System.out.println("创建成功!");
} else {
file.delete();
System.out.println("删除成功");
}
}
// 文件目录的创建
@Test
public void test7() {
File file = new File("D:\\io\\io1");
if (file.mkdir()) {
System.out.println("创建成功");
}
File file1 = new File("D:\\io\\io2");
if (file1.mkdirs()) {
System.out.println("创建成功2");
}
// 要想删除成功,io4文件目录下不能有子目录或文件
File file2 = new File("D:\\io\\io2");
System.out.println(file2.delete());
}
