• File类


    File类

    描述

    java.io.File 类是文件和目录路径名的抽象表示。
    * 1. File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)
    * 2. File类声明在java.io包下
    * 3. File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,
    *    并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。
    * 4. 后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的"终点"
    

    路径分类

    • 相对路径:相较于某个路径下,指明的路径。
    • 绝对路径:包含盘符在内的文件或文件目录的路径
    • 说明:
      IDEA中:
      如果大家开发使用JUnit中的单元测试方法测试,相对路径即为当前Module下。
      如果大家使用main()测试,相对路径即为当前的Project下。
      Eclipse中:
      不管使用单元测试方法还是使用main()测试,相对路径都是当前的Project下。

    常用方法

    构造方法

    File​(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。 
        参数;
        	String parent;父路径
        	String child;子路径
        好处;
        	父路径子路径,可以单独写
        	父路径是File类型,可以使用file类中那个的方法对路径进行一些操作
    File​(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 
        参数;
        	string pathname;字符串的路径名称
        	路径可以是文件结尾,也可以是文件夹结尾
        	路径可以是相对路径/绝对路径,也可以是不存在/存在
        	file对象只是把字符串路径封装成file类对象,不考虑路径的真实情况
    File​(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。  
    File​(URI uri) 通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。  
    

    字段汇总

    static String pathSeparator 与系统相关的分隔符字符,为方便起见,表示为字符串。 
        windows为;  Linux为:
    static char pathSeparatorChar 与系统相关的路径分隔符。
    
    static String separator 与系统相关的默认名称的路径分隔符字符,以方便的方式表示为字符串。 
        window和dos系统为反斜杠   Linux和url为正斜杠 /
    static char separatorChar 与系统相关的默认名称分隔符。
    

    成员方法

    //获取功能--------------------------------------------------------
    public String getAbsolutePath(); 获取绝对路径.
        //存在不存在无所谓.
    public String getPath(); 获取构造方法中传递的路径.
        //在源码当中toString调用的就是getPath();
    public String getName(); 获取文件或者文件的名称.
        //获取的是构造方法中传递的结尾部分(文件还是文件夹).
    public String getParent(); 获取上层文件目录路径。若无返回null.
    public long length(); 返回此file表示的'文件'的长度(即:字节数)。不能获取目录长度,如果不存在输出0.
    public long lastModified(); 获取最后一次的修改时间,毫秒值.
    //判断功能----------------------------------------------------------
    public boolean exists(); 判断file表示的文件或者文件夹是否实际存在
    public boolean isDirectory();判断file表示的'文件夹'是否存在
        判断构造方中给定的路径是否是文件
    public boolean isFile(); 判断此file是否是'文件'
        用于判断构造方法中给定的路径是否以文件结尾
        	true/false
        注意/电脑的硬盘中只有文件和文件夹,两个方法是互斥的
        这两个方法使用的前提是;路径必须是存在的,否则都返回false
    public boolean canRead(); 判断是否可读
    public boolean canWrite(); 判读是可写
    public boolean isHidden(); 判断是否隐藏
    //创建文件------------------------------------------------------------
    public boolean createNewFile();创建文件。若文件的存在,就不创建,返回false,否则就创建并返回true。
        1.此方法不能创建文件价,只能创建文件
        2.创建的路径必须存在,否则就抛出异常。IOException
    public boolean mkdir();创建文件目录。如果此文件目录存在,就不创建。如果此文件目录的上层目录不存在,也不创建。-->创建单级文件夹
    public boolean mkdirs();创建文件目录。如果上层文件目录不存在一并创建。-->创建单/多级文件夹
        //注意;如果你创建问价或者文件目录没有写盘符路径,那么,默认在项目路径下。
    //删除----------------------------------------------------------------
    public boolean delete(); 删除文件或者文件夹
        //删除注意事项
        //删除可以是相对路径或者绝对路径
        //java中的删除不走回收站
        //要删除一个文件目录,请注意文件目录不能包含文件或者文件夹目录
    	//要删除的文件则不注意文件是否有内容
    //目录遍历-------------------------------------------------------------
    public String[] list(); 返回一个String数组,表示该file目录中的所有的子目录或者子文件
        根据构造方法中的目录存储到一个String类型的数组中
    public File[] listFiles; 返回file数组,表示该list目录中的所有子目录或者子文件
        注意事项;
        	list方法和listFiles方法遍历的是构造方法指定的目录。
        	如果构造方法中给出的目录的路径不存在,会抛出空指针
        	如果构造方法中给出的目录不是一个目录,也会抛出空指针
    static File[] listRoots​() 列出可用的文件系统根。
    File[] listFiles​(FileFilter filter) 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。  
    File[] listFiles​(FilenameFilter filter) 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。  
    
    //重命名----------------------------------------------------------------
    public boolean renameTo(File dest);把文件重命名位置的文件路径
    //设置-------------------------------------------------------------------
    boolean setExecutable​(boolean executable) 为此抽象路径名设置所有者的执行权限的便利方法。  
    boolean setExecutable​(boolean executable, boolean ownerOnly) 设置该抽象路径名的所有者或每个人的执行权限。  
    boolean setLastModified​(long time) 设置由此抽象路径名命名的文件或目录的最后修改时间。 
    

    练习

    • 文件搜索 遍历所欲的.txt文件,目录搜索,无法判断有多少级目录,所以使用递归遍历目录
      public static void searchTxt(File dir) {
      	File[] files = dir.listFiles();
      	for (File f : files) {
      		if (f.isDirectory()) {
      			searchTxt(f);
      		} else {
      			String name = f.getName();
      			//windows文件时忽略大小写的
      			name = name.toLowerCase();//大写转换小写
      			if (name.endsWith(".txt")) {//如果末尾是那就输出
      				System.out.println(f);
      			}
      		}
      	}
      }
      
    • 使用递归打印多级内存目录
      public static void method3(File file) {
          //首先获取到直接子目录和直接子文件
          File[] files = file.listFiles();
          //遍历
          for (File f : files) {
              //判断如果得到的是一个目录需要再次遍历
              if (f.isDirectory()) {
                  //表明f是一个目录,则继续遍历这个目录
                  //method3这个方法就是获取所有的文件,
                  //参数传递的刚好就是目录,直接调用就可以了
                  method3(f);
              } else {
                  //此时f不是一个目录,肯定是一个文件
                  System.out.println(f);
              }
      
          }
      }
      

    推荐
    文件过滤器
    io流

  • 相关阅读:
    精选的一些《编程之美》相关资料
    使用SftpDrive+SourceInsight阅读开源代码
    malloc()参数为0的情况
    《编程之美》4.5磁带文件存放优化:最优解是怎样炼成的
    从《编程之美》买票找零问题说起,娓娓道来卡特兰数——兼爬坑指南
    《编程之美》3.6判断链表是否相交之扩展:链表找环方法证明
    解答《编程之美》1.18问题1:给所有未标识方块标注有地雷概率
    C语言中 Float 数据结构的存储计算
    C#之内存分配
    unity----------------3D模型讲解
  • 原文地址:https://www.cnblogs.com/zk2020/p/14127105.html
Copyright © 2020-2023  润新知