Java —— File类

    xiaoxiao2023-10-04  23

    简介

    文件和目录路径名的抽象表示。用户界面和操作系统使用依赖于系统的路径名字符串命名文件和目录。 这个类提供了一个抽象的,独立于系统的层次化路径名的视图。 抽象路径名有两个组件:

    可选系统有关的前缀字符串,如磁盘驱动器符, "/"为UNIX根目录,或"\\\\"的Microsoft Windows UNC路径,并零个或多个字符串名称的序列。

    抽象路径名中的第一个名称可能是目录名称,或者在Microsoft Windows UNC路径名的情况下是主机名。 抽象路径名中的每个后续名称表示一个目录; 姓氏可以表示目录或文件。 空的抽象路径名没有前缀和空名称序列。

    将路径名字符串转换为抽象路径名或从抽象路径名转换本质上是系统依赖的。 当抽象路径名被转换为路径名字符串时,每个名称与默认分隔符的单个副本与下一个名称分隔开 。 默认名称分隔符由系统属性file.separator定义,并且可以在此类的公共静态字段separator和separatorChar中使用。 当路径名字符串转换为抽象路径名时,其中的名称可能由默认名称分隔符或由底层系统支持的任何其他名称 - 分隔符分隔。

    无论是抽象还是字符串形式,路径名可以是绝对的或相对的 。 绝对路径名是完整的,因为不需要其他信息来定位其表示的文件。 相对路径名必须根据从其他路径名获取的信息进行解释。 默认情况下, java.io包中的类始终会根据当前用户目录解析相对路径名。 该目录由系统属性user.dir ,通常是调用Java虚拟机的目录。

    抽象路径名的父级可以通过调用此类的getParent()方法获得,并由路径名的前缀和路径名的名称序列中的每个名称组成,除了最后一个。 每个目录的绝对路径名是任何File对象的祖先,绝对抽象路径名以目录的绝对路径名开头。 例如,通过将抽象路径名"/usr"表示的目录是由该路径名"/usr/local/bin"表示的目录的祖先。

    前缀概念用于处理UNIX平台上的根目录,并在Microsoft Windows平台上驱动说明符,根目录和UNC路径名,如下所示:

    对于UNIX平台,绝对路径名的前缀始终为"/" 。 相对路径名没有前缀。 表示根目录的抽象路径名具有前缀"/"和空名称序列。对于Microsoft Windows平台,包含驱动器说明符的路径名的前缀由后面跟着":"的驱动器号组成,如果路径名是绝对的,则可能后跟"\\" 。 UNC路径名的前缀为"\\\\" ; 主机名和共享名称是名称序列中的前两个名称。 没有指定驱动器的相对路径名没有前缀。

    该类的实例可以表示或不表示实际的文件系统对象,例如文件或目录。 如果它表示这样一个对象,那么该对象驻留在一个分区中 。 分区是文件系统的特定于操作系统的存储部分。 单个存储设备(例如物理磁盘驱动器,闪存,CD-ROM)可能包含多个分区。 该对象(如果有的话)将驻留在该路径名的绝对形式的一些祖先的分区named上。

    文件系统可以对实际的文件系统对象上的某些操作实施限制,例如读取,写入和执行。 这些限制统称为访问权限 。 文件系统对单个对象可以具有多组访问权限。 例如,一组可能适用于对象的所有者 ,另一组可能适用于所有其他用户。 对象的访问权限可能会导致此类中的某些方法失败。

    该实例File类是不可变的; 也就是说,一旦创建,由File对象表示的抽象路径名永远不会改变。

    与java.nio.file包的互java.nio.file

    java.nio.file包定义了Java虚拟机访问文件,文件属性和文件系统的接口和类。 该API可能用于克服java.io.File类的许多java.io.File 。 该toPath方法可以被用于获得Path使用由A表示的抽象路径File对象查找文件。 所得到的Path可以与Files类一起使用,以提供更有效和更广泛的访问附加文件操作,文件属性和I / O异常,以帮助在文件操作失败时诊断错误。

    构造方法

    构造方法和描述File(File parent, String child)

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

    File(String pathname)

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

    File(String parent, String child)

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

    File(URI uri)

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

     

    public File(String pathname)

     

    通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。 如果给定的字符串是空字符串,则结果是空的抽象路径名。

    参数

    pathname - 路径名字符串

    异常

    NullPointerException - 如果 pathname参数是 null

    public File(String parent, String child)

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

    如果parent是null则创建新的File实例,就像在给定的child路径名字符串上调用单参数File构造函数一样。

    否则,将使用parent路径名字符串来表示目录,并将child路径名字符串用于表示目录或文件。 如果child路径名字符串是绝对的,那么它将以系统相关的方式转换为相对路径名。 如果parent是空字符串,则通过将child转换为抽象路径名并根据系统相关的默认目录解析结果来创建新的File实例。 否则,每个路径名字符串将转换为抽象路径名,并且子抽象路径名将针对父对象进行解析。

    参数

    parent - 父路径名字符串

    child - 子路径名字符串

    异常

    NullPointerException - 如果 child是 null 

    public File(File parent, String child)

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

    如果parent是null则创建新的File实例,就像在给定的child路径名字符串上调用单参数File构造函数一样。

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

    参数

    parent - 父抽象路径名

    child - 子路径名字符串

    异常

    NullPointerException - 如果 child是 null

    public File(URI uri)

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

    file: URI的确切形式是依赖于系统的,因此此构造函数执行的转换也依赖于系统。

    对于给定的抽象路径名f,它是保证的

    new File(  f . toURI()).equals(  f . getAbsoluteFile())

    只要原始的抽象路径名,URI和新的抽象路径名都在同一个Java虚拟机(可能不同的调用)中创建。 但是,当在一个操作系统上的虚拟机中创建的883992944783 URI在不同的操作系统上的虚拟机中被转换为抽象路径名时,这种关系通常不成立。

    参数

    uri - 绝对的层次化URI,方案等于 "file" ,非空路径组件,以及未定义的权限,查询和片段组件

    异常

    NullPointerException - 如果 uri是 null

    IllegalArgumentException - 如果参数的前提条件不成立

    方法 

    注意:在重命名文件时,必须保证file1文件存在硬盘中,并且file2文件不能存在文件中(file2文件为将file1文件重命名file2)。 

    类型和参数方法和描述booleancanExecute()

    测试应用程序是否可以执行此抽象路径名表示的文件。

    booleancanRead()

    测试应用程序是否可以读取由此抽象路径名表示的文件。

    booleancanWrite()

    测试应用程序是否可以修改由此抽象路径名表示的文件。

    intcompareTo(File pathname)

    比较两个抽象的路径名字典。

    booleancreateNewFile()

    当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。

    static FilecreateTempFile(String prefix, String suffix)

    在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。

    static FilecreateTempFile(String prefix, String suffix, File directory)

    在指定的目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。

    booleandelete()

    删除由此抽象路径名表示的文件或目录。

    voiddeleteOnExit()

    请求在虚拟机终止时删除由此抽象路径名表示的文件或目录。

    booleanequals(Object obj)

    测试此抽象路径名与给定对象的相等性。

    booleanexists()

    测试此抽象路径名表示的文件或目录是否存在。

    FilegetAbsoluteFile()

    返回此抽象路径名的绝对形式。

    StringgetAbsolutePath()

    返回此抽象路径名的绝对路径名字符串。

    FilegetCanonicalFile()

    返回此抽象路径名的规范形式。

    StringgetCanonicalPath()

    返回此抽象路径名的规范路径名字符串。

    longgetFreeSpace()

    返回分区未分配的字节数 named此抽象路径名。

    StringgetName()

    返回由此抽象路径名表示的文件或目录的名称。

    StringgetParent()

    返回此抽象路径名的父 null的路径名字符串,如果此路径名未命名为父目录,则返回null。

    FilegetParentFile()

    返回此抽象路径名的父,或抽象路径名 null如果此路径名没有指定父目录。

    StringgetPath()

    将此抽象路径名转换为路径名字符串。

    longgetTotalSpace()

    通过此抽象路径名返回分区 named的大小。

    longgetUsableSpace()

    返回上的分区提供给该虚拟机的字节数 named此抽象路径名。

    inthashCode()

    计算此抽象路径名的哈希码。

    booleanisAbsolute()

    测试这个抽象路径名是否是绝对的。

    booleanisDirectory()

    测试此抽象路径名表示的文件是否为目录。

    booleanisFile()

    测试此抽象路径名表示的文件是否为普通文件。

    booleanisHidden()

    测试此抽象路径名命名的文件是否为隐藏文件。

    longlastModified()

    返回此抽象路径名表示的文件上次修改的时间。

    longlength()

    返回由此抽象路径名表示的文件的长度。

    String[]list()

    返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。

    String[]list(FilenameFilter filter)

    返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录。

    File[]listFiles()

    返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。

    File[]listFiles(FileFilter filter)

    返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。

    File[]listFiles(FilenameFilter filter)

    返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。

    static File[]listRoots()

    列出可用的文件系统根。

    booleanmkdir()

    创建由此抽象路径名命名的目录。

    booleanmkdirs()

    创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。

    booleanrenameTo(File dest)

    重命名由此抽象路径名表示的文件。

    booleansetExecutable(boolean executable)

    为此抽象路径名设置所有者的执行权限的便利方法。

    booleansetExecutable(boolean executable, boolean ownerOnly)

    设置该抽象路径名的所有者或每个人的执行权限。

    booleansetLastModified(long time)

    设置由此抽象路径名命名的文件或目录的最后修改时间。

    booleansetReadable(boolean readable)

    一种方便的方法来设置所有者对此抽象路径名的读取权限。

    booleansetReadable(boolean readable, boolean ownerOnly)

    设置此抽象路径名的所有者或每个人的读取权限。

    booleansetReadOnly()

    标记由此抽象路径名命名的文件或目录,以便只允许读取操作。

    booleansetWritable(boolean writable)

    一种方便的方法来设置所有者对此抽象路径名的写入权限。

    booleansetWritable(boolean writable, boolean ownerOnly)

    设置此抽象路径名的所有者或每个人的写入权限。

    PathtoPath()

    返回从此抽象路径构造的java.nio.file.Path对象。

    StringtoString()

    返回此抽象路径名的路径名字符串。

    URItoURI()

    构造一个表示此抽象路径名的 file: URI。

     例如

    package com.test; import java.io.File; import java.io.IOException; public class Main9 { public static void main(String[] args) throws IOException { File file = new File("source-file/aaa"); File file1 = new File("source-file/aaa"); File file2 = new File("config-mybatis/1"); //如果file2文件路径不存在,则创建该文件及其子文件 if (file2.exists()){ System.out.println("该文件目录已经存在"); }else { //创建父文件及其子文件 file2.mkdirs(); System.out.println(file2+"创建文件成功"); } //指定file3文件路径,含其子路径 File file3 = new File("G:\\Test\\Java-test-2019\\config-mybatis","1"); //判断file3文件是否存在 if (file3.exists()){ System.out.println(file3); } //根据file3路径判断其子路径是否存在5.html File file4 = new File(file3,"5.html"); if (file4.exists()){ System.out.println(file4); } int i = file.compareTo(file1); //判断两个文件路径是否一样 if (file.equals(file1)){ System.out.println(i); } //获取文件名称 System.out.println(file.getName()); //获取文件父路径 System.out.println(file.getParent()); //获取文件路径 System.out.println(file.getPath()); //获取文件父路径文件 System.out.println(file.getParentFile()); //获取文件长度 System.out.println(file.length()); //文件路径地址 System.out.println(file.toPath()); //文件绝对路径地址 System.out.println(file.toURI()); //file文件路径不存在时创建文件 if (file.createNewFile()){ System.out.println("创建文件成功"); } //创建文件,前缀为java-info,文件后缀为(文件格式)为:.jpg,文件路径为source-file File.createTempFile("java-info",".jpg", new File("source-file")); //文件重命名 //注意:file5文件必须在硬盘中存在,并且file6文件不能在文件中存在 File file5 = new File("config-mybatis/1/5.html"); File file6 = new File("config-mybatis/1/6.html"); boolean flag = file5.renameTo(file6); System.out.println(flag); } }

     

    最新回复(0)