基本概念
1、概述:可以操作磁盘上文件或者文件夹的类型
通过路径封装为File类对象,通过类中提供的方法操作文件或者文件夹
2、路径:描述文件夹或者文件在计算机上位置的字符串
分类:
绝对路径:带着盘符的路径,从根目录开始的路径
相对路径:在父级路径下的一个子级路径
3、特点:此类在io包,需要导包
构造方法
1、File(String pathname) :将参数描述的字符串路径封装为一个file对象
2、File(String parent, String child) :将两个字符串拼接之后的路径封装为一个file对象
3、File(File parent, String child) :将第一个参数描述的file对象路径,和第二个参数字符串 拼接之后的路径再封装到一个新的对象中
File(String pathname) | 将参数描述的字符串路径封装为一个file对象 |
---|---|
File(String parent, String child) | 将两个字符串拼接之后的路径封装为一个file对象 |
File(File parent, String child) | 将第一个参数描述的file对象路径,和第二个参数字符串 拼接之后的路径再封装到一个新的对象中 |
– | – |
import java.io.File;
//使用绝对路径封装a.txt文件
File f = new File("D:\\develope\\idea\\work\\Projects\\a.txt");
//使用相对路径封装a.txt文件
File f2 = new File("a.txt");
//将a.txt的父级路径和子级路径分来定义
File f5 = new File("abc","b.txt");
//先封装父级路径,再封装子级路径
File f6 = new File("abc");
File f7 = new File(f6,"b.txt");
File类的创建方法
1、createNewFile() :创建一个文件
2、mkdir() :创建一个文件夹,如果父级路径不存在,就不能创建成功
3、mkdirs() :创建一个文件夹,父级路径不存在一起创建
createNewFile() | 创建一个文件 |
---|---|
mkdir() | 创建一个文件夹,如果父级路径不存在,就不能创建成功 |
mkdirs() | 创建一个文件夹,如果父级路径不存在,连着父级路径一起创建 |
//想在工程下创建一个文件:a.txt
File f = new File("a.txt");
boolean boo = f.createNewFile();
System.out.println(boo);
//在当前工程下创建一个文件夹:abc
File f2 = new File("abc");
boolean boo2 = f2.mkdir();
System.out.println(boo2);
//在abc文件夹中创建一个aaa文件夹
File f3 = new File("abc/aaa");
boolean boo3 = f3.mkdir();
System.out.println(boo3);
//在c文件夹中创建一个文件夹d
File f4 = new File("c/d");
boolean boo4 = f4.mkdirs();
System.out.println(boo4);
//在d文件夹中,创建一个f文件
File f5 = new File("d");
boolean boo5 = f5.mkdir();
File f6 = new File(f5,"f");
boolean boo6 = f6.createNewFile();
System.out.println(boo6);
File类的删除功能
1、delete() :删除调用者所描述的文件或者文件夹
注意:1、只能删除空文件夹
2、删除后不走回收站
File f = new File("a.txt");
boolean boo = f.delete();
System.out.println(boo);
File f2 = new File("abc/aaa");
boolean boo2 = f2.delete();
System.out.println(boo2);
File f3 = new File("d");
System.out.println(f3.delete());
File类的重命名
1、renameTo(File dest) :
注意:
1、参数不是一个字符串,而是一个改名之后的位置字符串所属的file对象
2、如果在同一个文件夹中,就是重名
3、如果在不同文件夹中,就是剪切
//将d目录下的f文件名字改为abc
//重命名
File f = new File("d/f");
File f2 = new File("d/abc");
boolean b = f.renameTo(f2);
System.out.println(b);
//剪切,将abc剪切到另一个目录中
File f3 = new File("c/d/abc");
System.out.println(f2.renameTo(f3));
//剪切+重命名
File f4 = new File("abc/aaa");
System.out.println(f3.renameTo(f4));
File类的判断功能
1、exists() :判断调用者描述的文件或者文件夹是否存在
2、isDirectory() :判断调用者是不是文件夹
3、isFile() :判断调用者是不是文件
4、isAbsolute() :判断调用者描述的路径是不是绝对路径
方法 | 功能 |
---|---|
exists() | 判断调用者描述的文件或者文件夹是否存在 |
isDirectory() | 判断调用者是不是一个文件夹 |
isFile() | 判断调用者是不是一个文件 |
isAbsolute() | 判断调用者描述的路径是不是一个绝对路径 |
File f = new File("abc/aaa");
System.out.println(f.exists());//true
System.out.println(new File("aaa").exists());//false
System.out.println(f.isDirectory());//false
System.out.println(f.isFile());//true
File f2 = new File("D:\\develope\\idea\\work\\Projects\\abc\\aaa");
System.out.println(f2.isAbsolute());//true
File类的获取功能
1、getAbsolutePath() :返回绝对路径
2、getPath() :获取相对路径
3、getName() :获取文件名或者文件夹名
4、length() :获取文件中的字节大小
此方法只能适用于文件的对象使用,不适用于文件夹的对象
数据只能在文件中直接存储,不能直接在文件夹的存储
5、list() :获取当前调用者目录下所有的文件和文件夹的名称到一个字符串数组中
6、listFiles() :获取当前调用者目录下所有文件和文件夹的名称之后,再将每个名称字符串 封装为一个个file对象,到一个File数组中。
方法 | 功能 |
---|---|
getAbsolutePath() | 返回绝对路径 |
getPath() | 获取相对路径 |
getName() | 获取调用者描述的文件名或者文件夹名 |
length() | 获取文件中的字节大小 |
list() | 获取当前调用者目录下所有的文件和文件夹的名称到一个字符串数组中 |
listFiles() | 获取当前调用者目录下所有文件和文件夹的名称之后,再将每个名称字符串 封装为一个个file对象,到一个File数组中。 |
File f = new File("abc/aaa");
//获取绝对路径
String str = f.getAbsolutePath();
System.out.println(str);
//获取相对路径
System.out.println(f.getPath());
//获取名称
System.out.println(f.getName());
//获取文件字节数
System.out.println(f.length());
//文件夹字节数都为0
File f2 = new File("abc");
System.out.println(f2.length());
//获取某曾目录下的每一个文件或者文件夹名字到字符串数组中
File f3 = new File("D:\WeGameApps\英雄联盟\WeGameLauncher");
String[] strs = f3.list();
for(String s:strs){
System.out.println(s);
}
//获取某目录下,每一个文件或者文件夹的File对象到数组中
File[] fs = f3.listFiles();
for(File ff:fs){
System.out.println(ff.getAbsolutePath());
练习
- 键盘录入一个字符串,表示一个文件夹路径,如果不是文件夹路径则提示重新登录
如果是文件夹路径则打印这一层目录下的所有文件的名称
import java.io.File;
import java.util.Scanner;
public class Demo07 {
// 键盘录入一个字符串,表示一个文件夹路径,如果不是文件夹路径则提示重新录入
// 如果是文件夹路径则打印这一层目录下的所有文件的名称
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请录入一个文件夹路径");
while(true){
String str = sc.nextLine();
File f = new File(str);
if(f.isDirectory()){
//打印该层文件夹下所有的文件名称
printFileName(f);
break;
}else{
System.out.println("不是一个文件夹路径,请重新录入");
}
}
}
//定义一个方法,打印一个文件夹下的每一个文件名称
public static void printFileName(File f){
File[] fs = f.listFiles();
for(File ff:fs){
if(ff.isFile()){
System.out.println(ff.getName());
}
}
}
}