[Day22]IO(File、递归)

1.File

  1.1 IO概述

  (1)当需要把内存中的数据存储到持久化设备上的这个动作称为输出(写)Output操作

  (2)当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作

  1.2 File类-Java中把文件或目录(文件夹)都封装成File对象

  1.3 File类的构造函数

  (1)File(File parent,String child)  根据parent抽象路径名和child路径名字符串创建一个新File实例

  (2)File(String pathname)   通过将给定路径名字符串转换为抽象路径名来创建一个新File实例

  (3)File(String parent,String child)  根据parent路径字符串和child路径名字符串创建一个新File案例

  1.4 File类的获取

  (1)String  getAbsolutePath()  返回此抽象路径名的绝对路径名字符串

  (2)String  getName()  返回由此抽象路径名表示的文件或目录的名称

  (3)String  getPath()  将此抽象路径名转换为一个路径名字符串

  (4)long  length()  返回由此抽象路径名表示的文件的长度

  1.5 文件和文件夹的创建删除等

  (1)boolean createNewFile()  当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件

  (2)boolean delete()  删除此抽象路径名表示的文件或目录

  (3)boolean exists()     测试此抽象路径名表示的文件或目录是否存在

  (4)boolean isDirectory()  测试此抽象路径名表示的文件是否是一个目录

  (5)boolean isFile()  测试此抽象路径名表示的文件是否是一个标准文件

  (6)boolean mkdir()  创建此抽象路径名指定的目录

  1.6 listFiles()方法

  (1)String[]   list()  返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录

  (2)File[]  listFiles()  返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件

  (3)采用上述两方法时,要求指定的目录必须是存在的,指定的必须是目录,否则容易引发返回数组为null,出现NullPointerException

  1.7 文件过滤器

  (1)File[]   listFiles(FilenameFilter filter)  返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录

    接口FilenameFilter:实现此接口的类实例可用于过滤器文件名

  (2)boolean  accept(File dir,String name)  测试指定文件是否应该包含在某一个文件列表中

  (3)File[]   listFiles(FileFilter filter)  返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录

    接口FileFilter:用于抽象路径名的过滤器

  (4)boolean  accept(File  pathname)  测试指定抽象路径名是否应该包含在某一个文件列表中

  (5)FilenameFilter过滤器和FileFilter过滤器的区别:

    FilenameFilter过滤器中的accept方法接受两个参数,一个当前文件或文件夹所在的路径,一个是当前文件或文件夹对象的名称。

    FileFilter 过滤器中的accept方法接受一个参数,这个参数就当前文件或文件夹对象

    当我们需要过滤文件名称时就可以使用FilenameFilter这个过滤器,当我们想对当前文件或文件夹进行过滤,就可以使用FileFilter ,比如需要当前目录下的所有文件夹,就可以使用FileFilter 过滤器。

2. 递归-在当前方法内调用自己的这种现象

  2.1  概述

  (1)分类-直接递归和间接递归

    直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法

  (2)递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。

  

原文地址:https://www.cnblogs.com/ERFishing/p/10755161.html