File 类
a 基础概念
我们在操作系统(windows,Linux,mac,os)中经常操作两种数据: 文件和文件夹操作系统通过路径来唯一定位一个文件或文件夹
文件:File
文件夹:Directory(dir)
路径:path
b 绝对路径和相对路径
File(String pathname)
pathname :路径名 即可以传相对路径 又可以传绝对路径
File(File parent,String Child) :原理同下 只不过parent 的类型是file对象
根据parent 抽象路径名 和child 路径名字符串创建一个新的File 实例
-
File(String parent, String child)
根据parent 路径名字符串 路径名字符串创建一个新的File 实例
parent 一般传文件文件夹路径 child一般传文件名路径 最终都是拼接到一块
file类中的判断方法
-
boolean exists() 如果指定的路径存在该文件夹那么返回为true
相对路径
File file1 = new File("day15/src/File","1.txt"); System.out.println(file1.exists());
绝对路径必须以盘符开头 写死了
相对路径 工程目录
-
boolean isDirectory() 测试抽象路径表示的文件是一个目录
如果当前路径不是一个目录返回false 不存在也是
File file3 = new File("day15/src/File"); System.out.println(file3.isDirectory());//true
-
boolean isFile() 如果当前路径不是一个文件返回false 不存在也是
File 类的创建功能
boolean creatNewFile() 需要异常处理
File file4 = new File("day15/src/File/2.txt"); System.out.println(file4.createNewFile());
可以根据绝对路径或者相对路径创建一个空文件,创建成功返回true
如果指定的路径中当前文件存在 则返回false
如果指定的路径在盘符不存在那么直接抛出IOException 系统找不到指定的路径
-
boolean mkdir() 根据指定的路径创建文件夹 如果创建成功返回true 同上
boolean mkdir() 根据指定的路径创建文件夹 如果创建成功则返回true
如果指定的路径便是该文件夹已存在则返回false
只能创建文件夹不能创建文件 也不能创建多级文件只能创建单级文件
-
boolean mkdirs()
可以创建多级文件
File f = new File("day15/2/1"); System.out.println(f.mkdirs());
-
boolean delete()
File类中的delete() 方法删除文件或者文件夹不走回收站 并且不能删除多级文件夹 必须为空才能删除
File 类的获取功能
String getName() 返回的是最后一级路径
String getPath() 将此抽象路径名转换为一个路径名字符串
String getPath() 根据封装对象的路径来返回该路径
long length() 获取文件长度 单位是字节 只能获取文件长度
String getParent() 返回该方法返回父级路径(最后一级路径前面的所有路径)
File file = new File("D:\\test\\javaSE\\day15\\src\\File\\1.txt"); System.out.println(file.getParent());//D:\test\javaSE\day15\src\File
File getParentFile() 返回此抽象路径名父目录的抽象路径名
File file = new File("D:\\test\\javaSE\\day15\\src\\File\\1.txt"); System.out.println(file.getParent()); File parentFile = file.getParentFile(); System.out.println(parentFile.exists());
String getAbsoultPath() 无论File对象中封装的什么路径 返回此抽象路径的绝对路径
File getAbsoultFile() 同上不过 返回的是File类型 可以接着使用File中的方法、
-
String[] list() 获取指定路径下的文件或文件夹的名称。将这些名称封装到一个字符串数组中,返回这个字符串数组 只能获取当前文件夹下的一级文件 子级获取不到,如果路径表示一个文件路径,该方法返回Null 遍历Null会报空指针异常
File file3 = new File("day15/src"); String[] list = file3.list(); for ( String o: list){ System.out.println(o); }
-
File[] listFiles() 获取指定路径下的文件文件夹路径 将这些路径封装到一个File[] 数组中 如果指定的文件夹路径是相对路径那么将来输出File[] 数组中的File对象,最终结果是一个相对路径 且只能遍历文件夹
递归 recursion
递归容易栈内存溢出
利用递归的思想打印包下的所有文件名称
public static void method(File dir){ File[] files = dir.listFiles(); for (File f : files){ if (f.isFile()){ System.out.println(f.getName()); }else { method(f); } } }