一.File类
- 1.表示文件
- 2.表示文件夹
- 3.表示路径(可以是错误路径)
- 路径分隔符(具有跨平台性)
- Mac : / :
- window : \ ;
路径分割符代码:
public class Kll {
public static void main(String[] args) {
// 路径分割符
String s1 = File.pathSeparator;
System.out.println(s1);
String s2 = File.separator;
System.out.println(s2);
}
}
Mac平台运行结果:
二.构造方法
File类的构造方法1
只有一个String类型的参数,即文件的路径。
- 绝对路径(硬盘上的真实位置)
- /Users/lanou/Desktop/Test/kll.txt
- 相对路径
- 对于代码来说,路径是相对于当前的工程
- 注意:如果使用相对路径,不能以/开头
- 如果路径以 / 开头,系统就会按绝对路径寻找文件
代码:
// src/klp.txt文件是相对路径,要现在项目的src里创建一个klp.txt文件
public class Kll {
public static void main(String[] args) {
File file1 = new File("src/klp.txt");
// 判断该路径是否存在的方法
boolean b1 = file1.exists();
System.out.println(b1);
// 获取绝对路径的方法
String absolutePath = file1.getAbsolutePath();
// 获取传入的路径
String path = file1.getPath();
System.out.println(path);
System.out.println(file1);
}
}
File类的构造方法2
两个String类型的参数,第一个父级文件的路径,第二个是子级路径。
String parent = "/Users/lanou/Desktop/Test";
String child = "kll.txt";
File file = new File(parent, child);
// child是文件的名称,parent是文件所在的文件夹的绝对路径
File类的构造方法3
第一个是File类型,第二个是String类型;File类要给出父级文件,String类还是子级路径。
File parentFile = new File(parent);
File file2 = new File(parentFile, child);
三.File类方法
1.判断方法
// 判断路径是否存在 exists()
File file = new File("/Users/lanou/Desktop/Test/kll.txt");
// 判断路径是否是文件夹 isFile()
boolean b1 = file.isFile();
// 判断路径是否是文件 isDirectory()(
boolean b2 = file.isDirectory();
// 判断是不是隐藏文件
boolean b3 = file.isHidden();
2.创建方法
是根据文件的路径创建的,所以要在对象创建时给出文件名
File 对象名 = new File(“文件放置的位置的路径/要创建的文件名”);
File file = new File("/Users/lanou/Desktop/Test/klp.txt");
// 创建文件 createNewFile()
// 注意: 1.该文件只会创建一次 2.该方法只能创建文件 3.不填后缀名,创建出来的也是文件
boolean b1 = file.createNewFile();
System.out.println(b1);
// 创建单个文件夹方法 mkdir()
// 注意: 1. 即使带上文件后缀,创建出来的也是文件夹
File file2 = new File("/Users/lanou/Desktop/Test/hell.txt");
boolean b2 = file2.mkdir();
System.out.println(b2);
// 创建多层级文件夹方法(单层级也可以创建出来) mkdirs()
File file3 = new File("/Users/lanou/Desktop/Test/a/b/c/d");
boolean b3 = file3.mkdirs();
3.删除方法
// 删除方法(直接删除,不会去回收站)
// delete方法 1.可以删除文件 2.可以删除空文件夹
File file = new File("/Users/lanou/Desktop/Test/a");
boolean b1 = file.delete();
4.文件获取方法
// 获取文件夹下所有文件
File file1 = new File("/Users/lanou/Desktop/Test");
// list 只能获取一级目录的文件名称
String[] list = file1.list();
// lists 返回一级目录的文件的绝对路径
File[] files = file1.listFiles();
// 获取文件的字节数 .length() 返回值是Long类型的
// Mac下:英文1个字节,中文3个字节
// Win下:英文1个字节,中文2个字节
打印某文件夹下的所有文件的代码例子:
public class Kll {
public static void main(String[] args) {
File file = new File("/Users/lanou/Desktop/Test");
// 静态方法 类名调用
printFile(file);
}
// 打印方法 递归
public static void printFile(File file) {
// 获取该路径下的所有一级目录文件
File[] files = file.listFiles();
// 遍历文件数组
for (File file2 : files) {
// 判断是不是文件
if (file2.isFile()) {
// 是文件
System.out.println(file2);
}else {
// 是文件夹,调用本方法,继续判断
printFile(file2);
}
}
}
}
四.文件过滤器FileFilter接口
实现接口的过滤方法
- 返回false 数组中没有数据
- 返回true 所有一级目录文件都在数组内保存在(和没参数一样)
- 参数 File pathname 是一级目录下的所有文件
-
- 根据这个接口中的方法返回值
- true 就会把该文件存入到listFiles数组中
- false 不会存入到 数组中
-
- 综上
- 数组中保存什么完全根据这个方法的返回值来看
方法类实现接口代码:
// 只存文件类型
class MyFileFilter implements FileFilter{
@Override
public boolean accept(File pathname) {
// 判断文件类型
if (pathname.isDirectory()) {
// 是文件夹 不保存
return false;
}
// 文件保存
return true;
}