java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
public File(String pathname)
:通过将给定的路径名字符串转换为抽象路径名来创建新的 File 实例。
public File(String parent, String child)
:从父路径名字符串和子路径名字符串创建新的 File 实例。
public File(File parent, String child)
:从父抽象路径名和子路径名字符串创建新的 File 实例。
相对路径:相对于当前文件所在路径,一般为项目根目录。 绝对路径:从盘符开始的路径,这是一个完整的路径。
tips1: 一个 File 对象代表硬盘中实际存在的一个文件或者目录,无论该路径下是否存在文件或者目录,都不影响 File 对象的创建。 tips2: Windows 与 Linux 的路径分隔符不一致( Windows是 \ ,Linux 是 / ),使用 File.separatorChar 可以拿到当前系统下的路径分隔符。
方法名 | 说明 |
---|---|
String getAbsolutePath( ) | 返回此 File 的绝对路径名字符串 |
String getPath( ) | 将此 File 转换为路径名字符串 |
String getName( ) | 返回由此 File 表示的文件或目录的名称 |
long length( ) | 返回由此 File 表示的文件的长度 |
boolean exists( ) | 此 File 表示的文件或目录是否实际存在 |
boolean isDirectory( ) | 此 File 表示的是否为目录 |
boolean isFile( ) | 此 File 表示的是否为文件 |
boolean createNewFile( ) | 当且仅当具有该名称的文件尚不存在时,创建一个新的空文件 |
boolean delete( ) | 删除由此 File 表示的文件或目录 |
boolean mkdir( ) | 创建由此 File 表示的目录 |
boolean mkdirs( ) | 创建由此 File 表示的目录,包括任何必需但不存在的父目录 |
String[ ] list( ) | 返回一个 String 数组,表示该 File 目录中的所有子文件或目录 |
File[ ] listFiles( ) | 返回一个 File 数组,表示该 File 目录中的所有的子文件或目录 |
public class DemoRecursion { public static void main(String[] args) { //创建文件对象 File file = new File("E:\\"); recurstion(file); } public static void recurstion(File file) { //合法性判断 if (file == null) { return; } //获取文件夹下所有的子文件或者文件夹 File[] files = file.listFiles(); //可能因为权限等问题无法获取文件夹内的文件 if (files == null) { return; } //遍历文件数组 for (File file1 : files) { if (file1.isDirectory()) { //是文件夹则打印文件夹路径并递归 System.out.println(file1.getPath()); recurstion(file1); } else { //否则打印文件路径加文件长度 System.out.println(file1.getPath() + "\t大小是:" + ((float)file1.length() / 1024 / 1024) + "M"); } } } }
public class DemoCreateFile { public static void main(String[] args) { //指定文件路径 File file = new File("D:\\WorkSpace"); //传递一个递归结束条件 int i = 0; //调用方法 recursion(file,i); } public static void recursion(File file,int i) { //递归结束条件 if (i > 100) return ; //指定创建的文件夹 File f = new File(file,"new"); //创建文件夹 f.mkdirs(); //递归调用 recursion(f,i); } }
public class DemoDeleteFile { public static void main(String[] args) { //指定路径 File file = new File("D:\\WorkSpace\\new"); delete(file); } private static void delete(File file) { //判断是否存在 if (file.exists()) { //判断是否是文件夹 if (file.isDirectory()) { //获取文件夹内所有的文件和文件夹 File[] files = file.listFiles(); if (files.length > 0) { //若数组长度大于0则该文件夹内有内容 for (File file1 : files) { //遍历数组,递归文件夹 delete(file1); } } //删除文件夹 file.delete(); } else { //不是文件夹则直接删除文件 file.delete(); } } } }
public class DemoRecursion { static boolean b = false; public static void main(String[] args) { //创建文件对象 File file = new File("E:\\"); //键盘录入 Scanner sc = new Scanner(System.in); System.out.println("请输入要查找的文件"); String s = sc.next(); recurstion(file,s); if (!b) { System.out.println("没有找到文件"); } } public static void recurstion(File file,String s) { //合法性判断 if (file == null) { return; } //使用过滤器获取文件夹下所有的子文件或者文件夹 File[] files = file.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { //判断是否为文件夹或者是包含查找字符串的文件名 return file.isDirectory() || file.getName().contains(s); } }); //遍历数组 for (File file1 : files) { if (file1.isDirectory()) { //是文件夹则并递归 recurstion(file1,s); } else { //设置找到了文件 b = true; //打印文件路径 System.out.println(file1.getPath()); } } } }
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句