Java 中 文件操作的 API
1、创建文件对象的三种方式:
new File(String Pathname) 根据文件的绝对路径创建文件对象
new File(String Parent , String Child) 根据父路径字符串和子路径字符串创建文件对象
new File(File parent , String Child)根据父路径对应文件对象和子路径名字符串创建文件对象
注意:\ 在Java中表示转义字符,如果想要表示文件的路径的话 需要使用 \\ (不要自己拼接,要使用构造方法最好!)
2、File常见的成员方法(判断、获取)
public boolean isDirectory() //判断此路径名表示的File是否为文件夹
public boolean isFile() //判断此路径名表示的File对象 是否为文件
public boolean exists() //判断此路径名表示的File 是否存在
public long length() //返回文件的大小(字节数量) 只能是文件的大小,单位是字节, 可以通过除以1024进行换算单位 除以一次1024是kb 除以两次是mb 除以三次是GB 无法获取文件夹的大小 (想要获取文件夹的大小,就是把所有文件的大小加到一起)
public String getAbsolutePath() //返回文件的绝对路径
public String getPath() //返回定义文件时使用的路径 定义时的参数是什么,就返回什么
public String getName() //返回文件的名称,带后缀
public long lastModified() //返回文件的最后修改时间(时间的毫秒值)
3、File常见的成员方法(创建、删除)
public boolean createNewFile() //创建一个新的文件
细节1:如果当前路径表示的文件是不存在的,则创建成功,方法返回true
//!如果当前路径表示的文件是存在的,则创建失败,方法返回false
//细节2:如果父级路径是不存在的,那么方法会有异常IoException
//细节3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件
public boolean mkdir() //创建单级文件夹
//细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false
//细节2:mkdir方法只能创建单级文件夹,无法创建多级文件夹。
public boolean mkdirs() //创建多级文件夹
public boolean delete() //删除文件、空文件夹 不会走回收站
4、File常见的成员方法(获取并遍历)
(掌握) public File[] listFiles() //获取当前路径下所有内容(包括隐藏的文件)
/**
当调用者File表示的路径不存在时,返回null
当调用者File表示的路径是文件时,返回null
当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组
当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
当调用者File表示的路径是需要权限才能访问的文件夹时,返回null
**/
public static File[] listRoots() //列出可用的文件系统根 所有盘符
public String[] list() //获取当前该路径下所有内容
public String[] list(FilenameFilter filter) //利用文件名过滤器获取当前该路径下所有内容
//accept方法的形参,依次表示aaa文件夹里面每一个文件或者文件夹的路径
//参数一:父级路径
//参数二:子级路径
//返回值:如果返回值为true,就表示当前路径保留
//如果返回值为false,就表示当前路径舍弃不要
例子:需求:我现在要获取D:\\aaa文件夹里面所有的txt文件
File f2= new File(pathname:"D:\\aaa")
String[] arr3 = f2.1ist(new FilenameFilter(){
@Override
public boolean accept(File dir,String name){
File src = new File(dir,name);
return src.isFile() && name.endsWith(".txt");
}
});
System.out.println(Arrays.toString(arr3))
public File[] listFiles(FileFilter filter) //利用文件名过滤器获取当前该路径下所有内容
public File[] listFiles(FilenameFilter filter) //利用文件名过滤器获取当前该路径下所有内容
遍历C盘 得到所有以 .avi 结尾的文件
File src = new File("C:\\");
findAVI(src); //调用下面的findAVI 方法
public static void findAVI(File src){ //"C:'\\'"
//1、进入文件夹 src
File[] files = src.listFiles();
//2/遍历数组,依次得到src 里面每一个文件或者文件夹
if(files != null){
for(File file : files){
if(file.isFile()){
//3、判断,如果是文件的话,就可以执行题目的业务逻辑
String name = file.getName();
if(name.endWith(".avi")){
System.out.println(file);
}
else {
//4、判断,如果是文件夹的话,就可以进入递归
//细节: 再次调用本方法的时候,参数一定要是src的次一级路径
findAVI(file);
}
}
}
}
}