IO(1)----File类

一、概念

File类:文件和目录路径的抽象表示。

用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。抽象路径名 有两个组件:

  1. 一个可选的与系统有关的前缀 字符串,比如盘符,"/" 表示 UNIX 中的根目录,"\\" 表示 Microsoft Windows UNC 路径名。
  2. 零个或更多字符串名称 的序列。

抽象路径名中的第一个名称是目录名,对于 Microsoft Windows UNC 路径名则是主机名。抽象路径名中第一个名称之后的每个名称表示一个目录;最后一个名称既可以表示目录,也可以表示文件。 抽象路径名没有前缀和名称序列。

路径名字符串与抽象路径名之间的转换与系统有关。将抽象路径名转换为路径名字符串时,每个名称与下一个名称之间用一个默认分隔符 隔开。默认名称分隔符由系统属性 file.separator 定义,可通过此类的公共静态字段 separatorseparatorChar 使其可用。将路径名字符串转换为抽象路径名时,可以使用默认名称分隔符或者底层系统支持的任何其他名称分隔符来分隔其中的名称。

无论是抽象路径名还是路径名字符串,都可以是绝对 路径名或相对 路径名。绝对路径名是完整的路径名,不需要任何其他信息就可以定位它所表示的文件。相反,相对路径名必须使用取自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来解析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录。

调用此类的 getParent() 方法可以获取抽象路径名的 路径名,它由路径名前缀以及路径名名称序列中的每个名称(最后一个除外)组成。对于任何具有绝对抽象路径名的 File 对象,如果其绝对抽象路径名以某个目录的绝对路径名开头,那么该目录的绝对路径名是该 File 对象的祖先。例如,抽象路径名 "/usr" 表示的目录是路径名 "/usr/local/bin" 所表示目录的一个祖先。

在处理 UNIX 平台的根目录,以及 Microsoft Windows 平台的盘符、根目录和 UNC 路径名时,将用到前缀这一概念。如下所示:

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

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

文件系统可以实现对实际文件系统对象上的某些操作(比如,读、写、执行)进行限制。这些限制统称为访问权限。文件系统可以对一个对象设置多个访问权限。例如,一个设置可能适用于对象的所有者,另一个设置则可能适用于所有其他用户。对象上的访问权限可能导致此类的某些方法执行失败。

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

File类的字段

我们知道,各平台之间的路径分隔符是不一样的。为了屏蔽各个平台之间的分隔符差异,在构造File类的时候,可以使用Java提供的跨平台分隔符:

File.separator  ->  同一个路径中字符串分隔符

File.pathSeparator ->  分隔连续多个路径字符串

windows下的表现:

构造方法

 1   //不使用Java提供的分隔符,//只能在windows下生效
 2         File f1 = new File("E://io//io.txt");
 3         //使用Java提供的分隔符
 4         File f2 = new File("E" + File.separator + "io" + File.separator + "io.txt");
 5         System.out.println(f1);
 6         System.out.println(f2);
 7 
 8         //File(File parent,String child)
 9         //从父抽象路径名和子路径名字符串创建新的File实例
10         File f3 = new File("E:");
11         File f4 = new File(f3,"IO");
12         System.out.println(f4);
13 
14         //File(String path)
15         //将给定的路径名转换成抽象路径名来创建新的File实例
16         File f5 =  new File("E" + File.separator + "io" + File.separator + "io.txt");
17         System.out.println("f5->"+f5);
18 
19         //File(String parent,String child)
20         //从父路径字符串名和子路径字符串名创建新的File实例
21         File f6 = new File("E" + File.separator, "io" + File.separator + "io.txt");
22         System.out.println("f6->" + f6);
View Code

File类常用方法

 创建方法

1.boolean creatNewFile()   不存在返回true,存在返回false

2.boolean mkdir()  创建目录,如果上一级目录不存在,创建失败

3.boolean mkdir()  创建多级目录,如果上一级目录不存在也会自动创建

删除方法

1.boolean delete()  删除文件或目录,如果表示目录,则目录下必须为空才可以删除

2.boolean deleteOnExit()  文件使用完成后删除

判断方法

1.boolean canExecute()  判断文件是否可执行

2.boolean canRead()  判断文件是否可读

3.boolean canWrite()  判断文件是否可写

4.boolean isDirectory()  判断文件是否为一个目录

5.boolean exists()  判断文件或目录是否存在

6.boolean isFile()  判断对象是否为一个文件

7.boolean isHidden()  判断是否为隐藏文件

8.boolean isAbsolute()  判断是否为绝对路径

获取方法

1.String getName()  获取此对象表示的文件或目录名称

2.String getPath()  将此路径名转换为路径名字符串

3.String getAbsolutePath()  返回此抽象路径名的绝对形式

4.String getParent()  获取父路径名,不存在返回null

5.long lastModified()  获取最后一次修改的时间

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

7.boolean renameTo(File f)  重命名此抽象路径名表示的文件

8.File[] listRoots()  获取机器盘符

9.String[] list()  返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
10.String[] list(FilenameFilter filter)   返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录。

原文地址:https://www.cnblogs.com/blogforvi/p/11629819.html