File

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上。

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

image-20200506170356447

    • Constructor and Description
      File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。
      File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
      File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。
      File(URI uri) 通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。
public class MyFile {
  public static void main(String[] args) {
      String pathSeparator = File.pathSeparator;//路径分割符
      System.out.println(pathSeparator);//;
      String separator = File.separator;//文件分隔符
      System.out.println(separator);//\

//`File(String pathname)` 通过将给定的路径名字符串转换为抽象路径名来创建新的 `File`实例。
      File file = new File("D:\\api文档");
      System.out.println(file);//D:\api文档\aa.txt
      File file1 = new File("b.txt");//相对路径
      System.out.println(file1);//b.txt

//`File(String parent, String child)` 从父路径名字符串和子路径名字符串创建新的 `File`实例。
      File file2 = new File("c://", "c.txt");
      System.out.println(file2);//c:\c.txt

//`File(File parent, String child)` 从父抽象路径名和子路径名字符串创建新的 `File`实例。
      File file3 = new File(file, "a.txt");
      System.out.println(file3);//D:\api文档\a.txt

  }
}

1、获取功能的方法

String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。

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

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

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

File file = new File("F:\\intellij idea\\a.txt");
//`String``getAbsolutePath()` 返回此抽象路径名的绝对路径名字符串。
String absolutePath = file.getAbsolutePath();
System.out.println(absolutePath);//F:\intellij idea\a.txt

File file2 = new File("a.txt");
String absolutePath1 = file2.getAbsolutePath();
System.out.println(absolutePath1);//F:\intellij idea\a.txt

//**`getPath()` 将此抽象路径名转换为路径名字符串。**
String path = file.getPath();
System.out.println(path);//F:\intellij idea\a.txt
System.out.println(file.toString());//相当于file.getPath()

//**`getName()` 返回由此抽象路径名表示的结尾部分文件或目录的名称。**
String name = file.getName();
System.out.println(name);//a.txt

//`long``length()` 返回由此抽象路径名表示的文件的长度。
File file1 = new File("E:\\俺家笨丫头\\Pictures\\桌面壁纸\\vmydxl.jpg");
long length = file1.length();
System.out.println(length);//路径不存在就返回0

2、判断功能的方法

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

isDirectory()测试此抽象路径名表示的文件是否为文件夹。

isFile() 测试此抽象路径名表示的文件是否为文件。

File file = new File("F:\\intellij idea");
File file1 = new File("E:\\俺家笨丫头\\Pictures\\桌面壁纸\\vmydxl.jpg");
//exists() 测试此抽象路径名表示的文件或目录是否存在。
boolean exists = file1.exists();
System.out.println(exists);//true
//isDirectory()测试此抽象路径名表示的文件是否为目录(文件夹)。
boolean directory = file.isDirectory();
System.out.println(directory);//true
//isFile() 测试此抽象路径名表示的文件是否为文件。
boolean file3 = file.isFile();
System.out.println(file3);//false

3、创建删除功能方法

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

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

mkdir() 创建由此抽象路径名命名的目录(即文件夹)。

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

File file = new File("F:\\intellij idea\\a.txt");
File myfile = new File("F:\\intellij idea\\bb");
File myfile2 = new File("F:\\cc\\aa");
try {
  //createNewFile()当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
  boolean newFile = file.createNewFile();
  System.out.println(newFile);//true
  //delete() 删除由此抽象路径名表示的文件或目录。
  boolean delete = file.delete();
  System.out.println(delete);//true
  //mkdir() 创建由此抽象路径名命名的目录(即创建单级文件夹)。
  boolean mkdir = myfile.mkdir();
  System.out.println(mkdir);//true
  //mkdirs()创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。(还创建多级文件夹)
  boolean mkdirs = myfile2.mkdirs();
  System.out.println(mkdirs);//true
} catch (IOException e) {
  e.printStackTrace();
}

4、获取子文件夹及文件的方法

list() 返回一个字符串数组,表示File的目录中的子文件和文件夹。

listFiles() 表示会获取目录中的文件及文件夹的file对象。

File file = new File("F:\\intellij idea\\day11\\src\\com\\lixy");
//list() 返回一个字符串数组,表示File的目录中的子文件和文件夹。
String[] list = file.list();
for (String s : list) {
  System.out.println(s);
}
//listFiles() 表示会获取目录中的文件及文件夹的file对象。
File[] files = file.listFiles();
for (File file1 : files) {
  System.out.println(file1);
}

 

posted @ 2020-05-06 21:39  半颗桃核  阅读(483)  评论(0编辑  收藏  举报