IO流-1

1. File

1.1 概述

  1. File对象主要是用来表示文件或者是目录的路径的。类中提供了很多对文件或者文件夹操作的常用方法。

1.2 创建对象

  • 绝对路径
    以磁盘名开头的路径。例如:D:\Program Files\Java\jdk1.8.0_172
  • 相对路径
    不是以盘符开头的,相对于当前项目下的路径。例如: a.txt
  1. File(String pathname) //通过字符串类型的路径来创建对象
  2. File(String parent, String child) //通过父目录的路径(字符串类型)和文件(文件夹)名称来创建对象
  3. File(File parent, String child)//通过父目录的路径(File类型)和文件(文件夹)名称来创建对象

1.3 常用方法

  1. boolean createNewFile()//根据路径创建一个文件,返回值代表创建是否成功
  2. boolean mkdir() //根据路径创建一个文件夹,返回值代表创建是否成功
  3. boolean mkdirs() //根据路径创建一个文件夹,如果父目录不存在会自动创建父目录
  4. boolean exists() //判断文件或者文件夹是否存在
  5. boolean isFile() //判断是否是一个文件
  6. boolean isDirectory() //判断是否是一个文件夹
  7. boolean delete() //删除文件,或者删除空文件夹,返回值代表删除是否成功
  8. long length() //获取一个文件的大小,对文件夹无意义
  9. String getName()//获取文件或文件夹的名字
  10. File getParentFile() //获取父目录的File对象
  11. String getAbsolutePath()//获取File对象的绝对路径

1.4 重要方法

  1. File[] listFiles() //如果当前File对象是一个文件夹,可以获取文件夹下的所有文件或者文件夹的File对象。

注意:如果不是文件夹或者是文件夹的权限受限返回值是null。所以一定要对返回结果做非空判断。

  1. public static void main(String[] args) {
  2. File dir = new File("C:\\Users\\root\\Desktop\\test\\a.txt");
  3. File[] files = dir.listFiles();
  4. if(files!=null){
  5. for (File file : files) {
  6. System.out.println(file);
  7. }
  8. }
  9. }

2. 递归

  1. 在方法中调用方法本身就是递归。

例如

  1. public int f(int n){
  2. if(n==1){
  3. return 1;
  4. }
  5. return n*f(n-1);
  6. }
  1. **注意:我们在使用递归的过程中一定要保证递归能结束,不能无限递归下去不然会出现栈溢出(StackOverflowError)的情况 。**

小结:如果既可以用递归解决又可以用循环解决。我们一般用循环解决。