栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中的File类与IO流(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的File类与IO流(一)

1.File类基础概念
  • File类在java.io包下,是文件和目录(文件夹)的路径名的抽象表示,主要用于创建、获取、删除文件/文件夹,判断文件/文件夹是否存在,对文件夹进行遍历,获取文件的大小等操作。
  • File类与操作系统无关,任何操作系统都可以使用类中的方法。
  • 绝对路径与相对路径:绝对路径是一个完整的路径,以盘符开始的路径;相对路径是一个简化的路径,相对指的是相对于当前项目的根目录。路径不区分大小写,但Windows系统文件名称分隔符“/”是转义字符,需要用两个“//”来表示。
2.File类的静态方法
  1. static String pathSeparator():与操作系统有关的路径分隔符,为了方便,它被表示为一个字符(Windows:“;”,Linux:“:”)
  2. static char pathSeparatorChar():与操作系统有关的路径分隔符
  3. static String separator():与操作系统有关的文件名称分隔符,为了方便,它被表示为一个字符(Windows:“”,Linux:“/”)
  4. static char separator():与操作系统有关的文件名称分隔符
  • 注意事项:文件路径不能写死,因为文件名称分隔符不是固定的,与操作系统有关

3.File类的构造方法
  1. File(String pathname):通过给定路径创建一个新File实例,路径可以以文件结尾,也可以以文件夹结尾;路径可以是相对路径,也可以是绝对路径;路径可以是存在的,也可以是不存在的(创建File对象,只把字符串路径封装为File对象,不考虑路径的真假情况);
  2. File(String parentpathname, String childpathname):根据父路径和子路径名字创建一个新的File实例;好处:父路径和子路径单独书写,使用起来非常灵活,父路径和子路径都可以变化;
  3. File(File parentfile, String childpathname):parentfile是File类型,可以使用File类的方法对路径进行一些操作,再通过路径创建File对象。
4.File类的常用获取方法

 注意:

  1. 无论File构造方法中传递的是相对还是绝对路径,getAbsolutePath()方法输出的都是绝对路径;
  2. getPath()方法输出的是构造方法中传递的路径,是相对就返回相对,是绝对就返回绝对;
  3. toString()方法调用的是getPath()方法;
  4. length()方法是以字节为单位的;文件夹没有大小概念,length()方法不能获取文件夹的大小,获取后返回值为0;
  5. 如果构造方法给出的路径不存在,length()方法返回0。
5.File类的常用判断方法

注意:isDirectory()和isFile()两个方法是互斥的,要么是文件,要么是文件夹,这两个方法的使用前提是路径必须是存在的,否则都返回false。

6.File类的创建删除方法

注意:

  1. createNewFile()方法如果文件不存在,创建成功,会返回true,如果存在,创建不成功,会返回false;只能创建文件,不能创建文件夹;创建文件的路径必须存在,否则会报异常。
  2. mkdirs()方法既可以创建单级文件夹,又能创建多级文件夹;mkdir()方法只能创建单级文件夹,不能创建多级文件夹,如要创建多级文件夹,则返回false;mkdir()、mkdirs()方法和createNewFile()类似,如果文件夹不存在,创建成功,会返回true,如果存在,创建不成功,会返回false;只能创建文件夹,不能创建文件,如非要传一个文件,则创建为一个文件夹;多用mkdirs()方法。
  3. delete()可以删除构造方法给出的路径,可以删除文件或文件夹,若文件/文件夹删除成功返回true;若文件夹中有内容不会被删除,构造方法中的路径不存在,也会返回false;delete方法直接从硬盘删除文件/文件夹,不经过回收站,因此删除需谨慎。
7.File类的目录遍历方法

注意:

  • 如果构造方法给出的目录路径不存在,会抛出空指针异常;
  • 如果构造方法给出的是文件,而不是文件夹,会抛出空指针异常;
  • list()方法会遍历目录路径下的所有文件/文件夹,获取文件/文件夹的名称,把获取到的名称存储到String类型的数组中;
  • listFiles()方法会遍历目录路径下的所有文件/文件夹,把文件/文件夹封装为多个File对象,存储到File类型的数组中;
  • 隐藏的文件/文件夹也能获取到。
8.递归
  • 定义:在当前方法内调用自己的这种现象就叫递归;
  • 使用前提:当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归;
  • 分为两种:直接递归(方法自己调用自己)、间接递归(A调用B,B调用C,C调用A);
  • 注意:递归一定要有限制条件,保证递归能够停下来,否则会发生栈内存溢出;即使递归中有限制条件,也不能有太多次递归,否则也会发生栈内存溢出;构造方法禁止递归。
  • 栈内存溢出的原因:方法一直调用该方法,会导致栈中有无数个该方法,方法太多,超过了栈内存的大小,就会导致栈内存溢出的错误。栈内存大小会一直变化,没有具体的大小。 
  • 构造方法编译报错的原因:构造方法用来创建对象,一直递归会导致内存中有无数多个对象,直接编译报错。
  • 递归能不用就不用,频繁的创建方法、调用方法、销毁方法,效率低下。
  • 案例:递归打印多级目录、文件搜索。
9.文件过滤器
  • 在File类中有两个listFiles()重载的方法,方法参数传递的是过滤器,分别是:
  1. File[] listFiles(FileFilter filter),FileFilter接口用于过滤File对象,FileFilter有唯一一个抽象方法boolean accept(File pathname)
  2. File[] listFiles(FilenameFilter filter),用于过滤文件名称,FilenameFilter有唯一一个抽象方法boolean accept(File dir, String name)
  • 注意:两个过滤器接口(FileFilter和FilenameFilter)没有实现类,需要重写实现类的抽象方法accept(),在方法中定义过滤的规则。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881079.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号