1.前言

在学习I/O流前,我们需要了解一下File类。在Java API文档中,关于File类介绍:

public class File extends Object implements Serializable, Comparable<File>文件和目录路径名的抽象表示。 
       用户界面和操作系统使用依赖于系统的路径名字符串命名文件和目录。 这个类提供了一个抽象的,独立于系统的层次化路径名的视图。 抽象路径名有两个组件: 
       1.可选系统有关的前缀字符串,如磁盘驱动器符, "/"为UNIX根目录,或"\\\\"的Microsoft Windows UNC路径,并 
       2.零个或多个字符串名称的序列。 
       抽象路径名中的第一个名称可能是目录名称,或者在Microsoft Windows UNC路径名的情况下是主机名。 抽象路径名中的每个后续名称表示一个目录; 姓氏可以表示目录或文件。 空的抽象路径名没有前缀和空名称序列。 
       将路径名字符串转换为抽象路径名或从抽象路径名转换本质上是系统依赖的。 当抽象路径名被转换为路径名字符串时,每个名称与默认分隔符的单个副本与下一个名称分隔开 。 默认名称分隔符由系统属性file.separator定义,并且可以在此类的公共静态字段separatorseparatorChar中使用。 当路径名字符串转换为抽象路径名时,其中的名称可能由默认名称分隔符或由底层系统支持的任何其他名称 - 分隔符分隔。 
       无论是抽象还是字符串形式,路径名可以是绝对的或相对的 。 绝对路径名是完整的,因为不需要其他信息来定位其表示的文件。 相对路径名必须根据从其他路径名获取的信息进行解释。 默认情况下, java.io包中的类始终会根据当前用户目录解析相对路径名。 该目录由系统属性user.dir ,通常是调用Java虚拟机的目录。 
       抽象路径名的父级可以通过调用此类的getParent()方法获得,并由路径名的前缀和路径名的名称序列中的每个名称组成,除了最后一个。 每个目录的绝对路径名是任何File对象的祖先,绝对抽象路径名以目录的绝对路径名开头。 例如,通过将抽象路径名"/usr"表示的目录是由该路径名"/usr/local/bin"表示的目录的祖先。 
      前缀
概念用于处理UNIX平台上的根目录,并在Microsoft Windows平台上驱动说明符,根目录和UNC路径名,如下所示: 
  ---- 对于UNIX平台,绝对路径名的前缀始终为"/" 。 相对路径名没有前缀。 表示根目录的抽象路径名具有前缀"/"和空名称序列。 
  ----
对于Microsoft Windows平台,包含驱动器说明符的路径名的前缀由后面跟着":"的驱动器号组成,如果路径名是绝对的,则可能后跟"\\" 。 UNC路径名的前缀为"\\\\" ; 主机名和共享名称是名称序列中的前两个名称。 没有指定驱动器的相对路径名没有前缀。 
该类的实例可以表示或不表示实际的文件系统对象,例如文件或目录。 如果它表示这样一个对象,那么该对象驻留在一个分区中 。 分区是文件系统的特定于操作系统的存储部分。 单个存储设备(例如物理磁盘驱动器,闪存,CD-ROM)可能包含多个分区。 该对象(如果有的话)将驻留在该路径名的绝对形式的一些祖先的分区named上。 
       文件系统可以对实际的文件系统对象上的某些操作实施限制,例如读取,写入和执行。 这些限制统称为访问权限 。 文件系统对单个对象可以具有多组访问权限。
       例如,一组可能适用于对象的所有者 ,另一组可能适用于所有其他用户。 对象的访问权限可能会导致此类中的某些方法失败。 
该实例File类是不可变的; 也就是说,一旦创建,由File对象表示的抽象路径名永远不会改变。

2.File类

通过前言可知,File这个类实际上是以一种抽象的形式来表示对文件file目录dir等路径名称,Java程序把文件或者目录(文件夹)都封装成File对象。如果要操作硬盘上的文件,或者文件夹使用File类即可。File类只关注file文件的属性(文件名称、路径名称、读/写)。

在学习File类前,我们先了解一下该类的静态成员变量和构造方法。

2.1 File类的静态成员变量

static String pathSeparator与系统相关的路径分隔符字符,为方便起见,表示为字符串。
static char pathSeparatorChar与系统相关的路径分隔符。

static String

separator与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。
static char separatorChar与系统相关的默认名称分隔符。

[1]File类的静态成员变量
   与系统有关的路径分隔符";",表示目录的分割,已经结束。

public static void run1(){String separator = File.pathSeparator;System.out.println(separator);
}

[2]与系统有关的默认名称分隔符"\"
    "\"目录的名称分隔符,表示该文件结束。

public static void run2(){String separator = File.separator;System.out.println(separator);
}

2.2 File类的构造方法

File(File parent, String child)

从父抽象路径名和子路径名字符串创建新的 File实例。

File(String pathname)

通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。

File(String parent, String child)

从父路径名字符串和子路径名字符串创建新的 File实例。

File(URI uri)

通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。

在开发中,我们常用到其中三种构造方法,

 [1]File(String pathName);

参数:路径名,,可以写到文件夹,可以写到一个文件中。如果给定的字符串是空字符串,则结果是空的抽象路径名。
     * 例:c:\\abc     c:\\abc\\Demo.java
     * 将路径封装成File类型的对象

public static void run1(){//绝对路径File file = new File("F:\\test");System.out.println(file);
}

 [2]File(String parent,String child)

传递路径,传递字符串父级路径,字符串子路径。
     * 绝对路径:在系统中具有唯一性
     * 相对路径:表示路径之间的相对关系
     * 路径之间,相对于父级目录是唯一性的,而子目录是多个的。

如果parent是null则创建新的File实例,就像在给定的child路径名字符串上调用单参数File构造函数一样。 
否则,将使用parent路径名字符串来表示目录,并将child路径名字符串用于表示目录或文件。

如果child路径名字符串是绝对的,那么它将以系统相关的方式转换为相对路径名。

如果parent是空字符串,则通过将child转换为抽象路径名并根据系统相关的默认目录解析结果来创建新的File实例。 否则,每个路径名字符串将转换为抽象路径名,并且子抽象路径名将针对父对象进行解析。

参数 
       parent - 父路径名字符串 
       child - 子路径名字符串

public static void run2(){//相对路径File file = new File("G:","test");System.out.println(file);
}

File(String parent,String child)
     * 路径分开写
     * 可以单独控制父级路径,也可以单独操作子路径

public static void run3(String child){File file = new File("d:", child);System.out.println(file);
}

[3]File(File parent,String child)

如果parent是null则创建新的File实例,就像在给定的child路径名字符串上调用单参数File构造函数一样。 
否则,采用parent抽象路径名来表示目录,并将child路径名字符串用于表示目录或文件。
 
如果child路径名字符串是绝对的,那么它将以系统相关的方式转换为相对路径名。 
如果parent是空的抽象路径名,那么新的File实例是通过将child转换为抽象路径名并根据系统相关的默认目录解析结果来创建的。 否则,每个路径名字符串将转换为抽象路径名,并且子抽象路径名将针对父对象进行解析。

参数 
      parent - 父抽象路径名 
      child - 子路径名字符串

public static void run4(){File parent = new File("C:");File child = new File("System32");System.out.println(parent);System.out.println(child);
}

3.File类的方法摘要

3.1File类中的创建和删除方法

[1]File创建文件的功能
     *     boolean createNewFile()
     *     创建的文件路径和文件名,在File构造方法中给出
     *     如果创建的文件已经存在,将不再创建。

public static void run1() throws IOException{//只能创建文件File file = new File("F:\\Test\\a.txt");boolean b = file.createNewFile();System.out.println(b);
}

[2]File创建文件的功能
     *     boolean mkdir()
     *     创建的文件路径和文件名,在File构造方法中给出
     *     如果创建的文件夹已经存在,将不再创建。

public static void run2(){//在指定的路径中创建文件File file = new File("F:\\Test\\NEW");boolean b = file.mkdir();System.out.println(b);
}

[3]File强制删除文件夹或文件的功能
     *     boolean delete()
     *     删除文件路径和文件名,在File构造方法中给出
     *     直接删除后,将无法还原,慎用

public static void run3(){File file = new File("F:\\Test\\a.txt");boolean b = file.delete();System.out.println(b);
}

[4]File删除文件夹或文件的功能
     *     boolean deleteOnExit()
     *     删除文件路径和文件名,在File构造方法中给出
     *     在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

public static void run4(){File file = new File("F:\\Test\\a.txt");file.deleteOnExit();System.out.println(file);
}

3.2File类中的获取方法

[1]File类的获取功能
     *     String getName()
     *     返回由此抽象路径名表示的文件或目录的名称。

public static void run1(){File file = new File("F:\\Test\\NEW");String str = file.getName();System.out.println(str);String path = file .getParent();System.out.println(path);
}

[2]File类的获取功能
     *     long length()
     *     返回由此抽象路径名表示的文件的长度(字节数)。

public static void run2(){File file = new File("F:\\Test\\hello.txt");long str = file.length();System.out.println(str);
}

[3]File类的获取功能 
     *     File getAbsoluteFile()
     *     返回此抽象路径名的绝对路径名形式。
     * 
     *    String getAbsolutePath()
     *    返回此抽象路径名的绝对路径名字符串。

public static void run3(){File file = new File("F:\\Test\\hello.txt");File str = file.getAbsoluteFile();System.out.println(str);String ss = file.getAbsolutePath();System.out.println(ss);
}

[4]File类的获取功能 
     *     String getParent()
     *     返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
     *  
     *     File getParentFile()
     *     返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。 
     *  
     *     String getPath();
     *     将此抽象路径名转换为一个路径名字符串。

public static void run4(){File file = new File("F:\\Test\\hello.txt");File s1 = file.getParentFile();System.out.println(s1);String s2 = file.getParent();System.out.println(s2);String s3 = file.getPath();System.out.println(s3);
}

[5]File类的获取方法
 * File类list获取方法
 *    String[] list
 *        返回一个抽象路径名数组,也就是包含文件目录和文件目录的抽象路径。
 *        遍历目录,通过getName()和getAbsolutePath()来获取名字和路径。

public static void run2(){File file = new File("c:");String[] strArr = file.list();for (String str : strArr) {System.out.println(str);}
}

运行结果:

$Recycle.Bin
Config.Msi
Documents and Settings
DRMsoft
hiberfil.sys
Log
pagefile.sys
PerfLogs
Program Files
Program Files (x86)
ProgramData
Recovery
swapfile.sys
System Volume Information
Temp
Users
Windows

[6]File类的获取方法
 * File类listFiles获取方法
 *    File[]listFiles
 *        返回一个抽象路径名数组,也就是包含文件目录和文件目录的抽象路径。,通过getName()和getAbsolutePath()来获取名字和路径;
 *        遍历目录

public static void run3(){File file = new File("F:\\VideoStudy");File[] strArr = file.listFiles();for (File str : strArr) {//1.打印文件的绝对路径,输出结果个System.out.println(str);//2.打印文件名称System.out.println(str.getName());//3.打印文件的绝对路径,输出结果和1的输出是一样的System.out.println(str.getAbsolutePath()); }
}

运行结果:

F:\VideoStudy\Java
Java
F:\VideoStudy\Java
F:\VideoStudy\Java框架
Java框架
F:\VideoStudy\Java框架
F:\VideoStudy\JVM调优
JVM调优
F:\VideoStudy\JVM调优
F:\VideoStudy\Linux
Linux
F:\VideoStudy\Linux
F:\VideoStudy\云计算
云计算
F:\VideoStudy\云计算
F:\VideoStudy\分布式
分布式
F:\VideoStudy\分布式
F:\VideoStudy\前端开发
前端开发
F:\VideoStudy\前端开发
F:\VideoStudy\并发编程
并发编程
F:\VideoStudy\并发编程
F:\VideoStudy\微服务
微服务
F:\VideoStudy\微服务
F:\VideoStudy\数据库
数据库
F:\VideoStudy\数据库
F:\VideoStudy\数据结构
数据结构
F:\VideoStudy\数据结构
F:\VideoStudy\消息队列
消息队列
F:\VideoStudy\消息队列
F:\VideoStudy\计算机网络
计算机网络
F:\VideoStudy\计算机网络

3.3File类中的判断方法

[1]File类的判断功能
     *     boolean isDirectory()
     *     测试此抽象路径名表示的文件是否是一个文件夹。
     * 
     *     boolean isFile()
     *     测试此抽象路径名表示的文件是否是一个标准文件。 
     * 
     *     boolean exists()
     *     测试此抽象路径名表示的文件或目录是否存在。 
     *     存在,true
     *     不存在,false

public static void run1(){File file = new File("F:\\Test\\hello.txt");//判断文件/文件夹是否存在if (file.exists()) {boolean b = file.isDirectory();System.out.println(b);boolean b2 = file.isFile();System.out.println(b2);// boolean b3 = file.exists();// System.out.println(b3);}
}

愿你就像早晨八九点钟的太阳,活力十足,永远年轻。

(1)关于File类你知道多少相关推荐

  1. Java的File类

    File类的理解 常用构造器 常用方法 代码示例 练习 File类的理解 1.File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) 2.File类声明在java.io中 3.File类中涉 ...

  2. JavaのFile类基础操作之问题

    在上一章节,介绍了File类的基础操作,比如文件的创建,文件的删除等等.这一章节,将介绍在File类基础操作中遇到的问题. 1.路径分割符问题 在实际的软件开发与运行过程中,往往都会在Windows环 ...

  3. java技术培训之File类中常用的构造方法

    File类用于封装一个路径,这个路径可以是从系统盘符开始的绝对路径,如:"D:\file\a.txt",也可以是相对于当前目录而言的相对路径,如:"src\Hello.j ...

  4. JSP中的文件操作:数据流、File类、文件浏览、目录操作、上传下载

    ​ 文件可以永久地存储信息,从本质上讲文件就是存放在盘上的一系列数据的集合.应用程序如果想长期保存数据,就必须将数据存储到文件中,这就涉及到文件的操作.而在编写网站应用程序的过程中,有许多地方要对文件 ...

  5. Java IO流 序列二:File类

    2019独角兽企业重金招聘Python工程师标准>>> 2.File API 2.1. File类简介 包路径:java.io.File 功能:用于表示文件或者目录. 说明:File ...

  6. java File类 常用相关函数

    java File类 相关函数 1.构建函数 2.判断相关函数 4.创建相关函数 5.删除相关函数 6.获取相关函数 1.构建函数 /*** File 构造方法* file 常用构造方法* 1: Fi ...

  7. Java File类总结和FileUtils类

    Java File类总结和FileUtils类 文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录. 用public boolean exists()可以判断文件是否存在. Fi ...

  8. java 遍历file_JAVA File类(文件的遍历,创建,删除)

    File类构造函数 File f1=new File("H://asc//");//传入文件/目录的路径 File f2=new File(f1,"test.txt&qu ...

  9. 手把手带你入门Java中File类

    零基础学习Java之File类 概述 构造方法 基本介绍 代码示例 常用方法 获取文件和目录的基本信息 代码示例 判断功能 代码示例 创建和删除功能 代码示例 目录遍历功能 代码示例 概述 要学习Ja ...

  10. java中file类_Java中file类

    File类的概述:File更应该叫做一个路径,文件路径或者文件夹路径 ,路径分为绝对路径和相对路径,绝对路径是一个固定的路径,从盘符开始,相对路径相对于某个位置,在eclipse下是指当前项目下,在d ...

最新文章

  1. 如何解决创建Account时的error message BP category 2 does not fit the data in category 1
  2. 【原生JS插件】LoadingBar页面顶部加载进度条
  3. Codeforces 803E--Roma and Poker (DP)
  4. 如何开启OpenSSL和mcrypt
  5. activiti5第六弹 手动任务、接收任务、邮件任务
  6. css学习之border 边框
  7. 成为弹唱高手的秘诀,看这一篇就足够
  8. python实现图像检索的三种(直方图/OpenCV/哈希法)
  9. 动态规划(DP算法)详解
  10. R语言 线性混合效应模型实战案例
  11. 原生安卓开发!最详细的解释小白也能听懂,全网独家首发!
  12. linux使用TC并借助ifb实现入向限速(内附配置实例)
  13. 【TypeScript】必学基础
  14. 大专java方向校招面试找工作知识点技术栈以及实习感受分享-简历分享
  15. MVP+Dragger2+Rxjava2+Retrofit+OKhttp进行开发。
  16. StringUtils使用
  17. unwallet奖金制度解析
  18. 综述:目标检测2001-2021
  19. 互联网大厂公司月饼大比拼
  20. Python基础题之千焦千卡转换

热门文章

  1. 线程安全问题和Synchronized的使用
  2. ntpdate[16603]: the NTP socket is in use
  3. 春运前夕探秘动车所里的“动车体检医生”
  4. linux USR1亦通常被用来告知应用程序重载配置文件
  5. Sublime Text 中配置 Eslint 代码检查和自动修复
  6. Linux笔记之shell script
  7. 让VMware低版本运行VMware高版本创建的虚拟机
  8. android的线程安全
  9. Android文件资源(raw/data/asset)的存取
  10. 微软Hyper-V虚拟化技术全面体验