File类的概述
1.File类型:用于表示一个文件或者是文件夹的路径的对象(抽象路径名)
2.路径:用于描述文件或者文件夹的所在位置的字符串
3.路径分类:绝对路径、相对路径
4.绝对路径:从根目录开始的路径,称为绝对路径
Windows系统中:盘符目录就是根目录,D:、E:
Linux系统中:/就是根目录,从/开始的路径就是绝对路径
5.相对路径:相对于某个路径而言的路径
相对于不同的路径,同样的相对路径,表达的是不同的路径
Dos命令行中:相对于当前路径(Dos命令行所在的路径),a/b/c.txt
Eclipse中:相对于当前工程的根目录
File类型的构造方法(三构造)
1.File(String path):
把字符串的路径,封装成一个File对象 (直接写路径)
2.File(String parent, String child):
将父级路径和子级路径封装成一个File对象,
其实描述的是父级路径和子级路径拼接后的路径 (先写路径,再写文件路径)
3.File(File parent, String child):
将父级File对象路径和字节路径封装成一个 File对象,其实描述的也是父级路径和
子级路径拼接后的路径 (先写一个file,然后再写路径)
实例:
package com.ujiuye.demos;
import java.io.File;
public class Demo11_File的构造方法 {
public static void main(String[] args) {
File f1 = new File("a/b/c.txt");
System.out.println(f1);
File f2 = new File("a/b", "c.txt");
System.out.println(f2);
File dir = new File("a/b");
File f3 = new File(dir, "c.txt");
System.out.println(f3);
}
}
File类型的创建方法(俩个文件夹一个文件)
1.boolean createNewFile():
创建当前File对象所描述的路径的文件
2.boolean mkdir():
创建当前File对象所描述的路径的文件夹(如果父级路径不存在,则不会自动创建父级路径)
3.boolean mkdirs():
创建当前File对象所描述的路径的文件夹(如果父级路径不存在,那么自动创建父级路径)
实例
package com.ujiuye.demos;
import java.io.File;
import java.io.IOException;
public class Demo12_File的创建方法 {
public static void main(String[] args) throws IOException {
//封装a/b目录的File对象
File dir = new File("a/b");
//封装要创建的文件的File对象
File d = new File(dir, "d.txt");
d.createNewFile();
File e = new File(dir, "e.txt");
e.mkdir();
File f = new File("a/c", "f");
f.mkdir();//mkdir在父级路径不存在的条件下,也无法创建子级路径的文件夹
File g = new File("a/z", "g");
g.mkdirs();
}
编程实战:
需求:在D盘下的a/b/c/d中创建一个文件,名称叫HelloWorld.txt
package com.ujiuye.demos;
import java.io.File;
import java.io.IOException;
public class Demo13_创建文件练习 {
//在D盘下的a/b/c/d中创建一个文件,名称叫HelloWorld.txt
public static void main(String[] args) throws IOException {
File dir = new File("D:/a/b/c/d");
dir.mkdirs();
File f = new File(dir, "HelloWorld.txt");
f.createNewFile();
}
}
File类型的删除和重命名方法(delete就完事了)
1.delete():删除调用者描述的文件或者文件夹
注意事项:
1、delete在删除文件夹的时候,只能删除空文件夹
2、delete方法不走回收站
实例:
package com.ujiuye.demos;
import java.io.File;
public class Demo14_File的删除方法 {
public static void main(String[] args) {
File b = new File("a/b");
File d = new File(b, "d.txt");
d.delete();
File e = new File(b, "e.txt");
e.delete();
b.delete();
}
}
重命名:
2.renameTo(File dest)
调用者是当前的文件或者文件夹的路径对象
参数是变化之后的文件或者文件夹的路径对象
注意事项:
如果在同一个文件夹下,修改路径,就是重命名
如果在不同文件夹下,修改路径,就是剪切+重命名
实例:
package com.ujiuye.demos;
import java.io.File;
public class Demo15_File的重命名方法 {
public static void main(String[] args) {
File b = new File("a/b");
File c = new File(b, "c.txt");
File d = new File(b, "d.txt");
c.renameTo(d);
File d2 = new File("a/b/d.txt");
File h = new File("a/z/g/h.txt");
d2.renameTo(h);
}
}
File类型常用的判断功能(存在?文件?文件夹?)
1、exists():判断当前调用者File对象,是否存在
2、isFile():判断当前调用者File对象,是否是文件
3、isDirectory():判断当前调用者File对象,是否是文件夹
package com.ujiuye.demos;
import java.io.File;
public class Demo16_File的常用判断功能 {
public static void main(String[] args) {
File h = new File("a/z/g/h.txt");
System.out.println(h.isFile());
System.out.println(h.isDirectory());
File b = new File("a/b");
System.out.println(b.isFile());
System.out.println(b.isDirectory());
System.out.println(b.exists());
File n = new File("a/n");
System.out.println(n.exists());
System.out.println(n.isFile());
System.out.println(n.isDirectory());
}
}
File类型的获取功能(6获取,2路径,1名,1长度,2数组)
1、getAbsolutePath():获取当前File对象的绝对路径
2、getPath():获取的就是在构造方法中封装的路径
3、getName():
获取最底层的简单的文件或者文件夹名称(不包含所造目录的路径)
4、length():获取文件的字节个数
该方法被文件File对象调用时,返回的是文件的字节个数
该方法被文件夹File对象调用时,返回的数据是不确定的
5、String[] list():
获取当前文件夹下的所有文件和文件夹的名称,到一个字符串数组中
6、File[] listFiles():
获取当前文件夹下的所有文件和文件夹的File对象,到一个File对象数组中
实例:
package com.ujiuye.demos;
import java.io.File;
public class Demo17_获取方法 {
public static void main(String[] args) {
test3_listFiles();
}
private static void test3_listFiles() {
String dirPath = "d:\\Desktop\\1203第一阶段\\day17\\视频";
File dir = new File(dirPath);
File[] subFiles = dir.listFiles();
for (File file : subFiles) {
System.out.println(file.getName() + "..." + file.length());
}
}
private static void test2_list() {
String dirPath = "d:\\Desktop\\1203第一阶段\\day17\\视频";
File dir = new File(dirPath);
String[] names = dir.list();
for (String name : names) {
System.out.println(name);
}
}
private static void test1_简单获取方法() {
File h = new File("a/z/g/h.txt");
System.out.println(h.getAbsolutePath());
System.out.println(h.getPath());
System.out.println(h.getName());
System.out.println(h.length());
}
}
编程实战:
需求:
键盘录入一个字符串,表示一个文件夹路径,如果不是文件夹路径则提示重新录入
打印当前文件夹下,所有的大于20M的后缀名是.wmv的文件的绝对路径
package 练习6_4;
import java.io.File;
import java.util.Scanner;
/*
* //键盘录入一个字符串,表示一个文件夹路径,如果不是文件夹路径则提示重新录入
//打印当前文件夹下,所有的大于20M的后缀名是.wmv的文件的绝对路径
*/
public class Demo03 {
public static void main(String[] args) {
File f = getDir();
File[] files = f.listFiles();
for (File file : files) {
if (file.isFile()) {
String name = file.getName();
int last = name.lastIndexOf(".");
String str = name.substring(last + 1);
if (str == "wmv" && file.length() > 20 * 1024 * 1024) {
System.out.println(file.getAbsolutePath());
}
}
}
}
private static File getDir() {
File f = null;
Scanner sc = new Scanner(System.in);
System.out.println("请输入要访问的文件夹路径:");
String str = sc.nextLine();
f = new File(str);
while (true) {
if (f.isDirectory()) {
break;
} else {
System.out.println("路径有误,请重新输入");
str = sc.nextLine();
f = new File(str);
}
}
return f;
}
}
笔记总结:
主要是讲了File类中的各种方法,和常用类的学习过程是类似的,要熟读API文件
概括:
先构造(定路径)File f = new File();
再创建(文件,文件夹)mkdir一个,mkdirs一堆,文件就一个
删除就一个,delete()只删空
重命名,renameTo() ,to到括号中,谁骚谁调用
判断有三个,判空 exists(),判文件 isFile(),判文件夹 isDirectory()
六获取:
获取路径:1、getAbsolutePath():绝对路径
2、getPath():路径(构造封装路径)
一名一大小:
1.获取文件名:getName()
2.获取文件大小:length()
俩数组:(获取当前文件夹下的所有文件和文件夹)
一个File[]: listFiles() 带路径+名字(toString方法重写)
一个String[]:String[] list() 带名字