Class Overview (类概述)
一个由路径名确定文件系统实体的“抽象”表示。这个路径名可能是绝对路径(相对于文件系统的根目录)或是相对于程序运行的当前路径。
文件所引用的实际文件可能存在也可能不存在。它也可能是忽略文件的名称,只是一个目录或是一个非常规的文件。
这个类提供了有限的函数来获取或设置文件的权限,文件的类型,文件的最后修改时间。
当 Android 字符串转换为 UTF-8 字节序列时,发送文件到操作系统,字节序列会被系统返回(从各种列表方法)按照 UTF-8 转换为字符串。
Fields(字段)
public static final String pathSeparator 系统相关的字符串,用于在搜索路径中分离组件(“:”)。
public static final char pathSeparatorChar 系统相关的字符,用于在搜索路径中分离组件。(':')。这个是用来把 PATH 环境变量和类路径(classpath)系统属性分割成要搜索的目录列表。
public static final String separator 系统相关的字符串用于分割文件名(“/”)。
public static final char separatorChar 系统相关的字符,用于分割文件名(“/”)。使用这个(而不是硬编码)有助于其他系统的可移植性。
该字段从系统属性“file.separator”初始化。以后更改此属性不会对该字段或该类有影响。
Public Construcorts (公共的构造方法)
public File(File dir,String name)
通过指定的目录和名字创建一个新的文件。
参数:
dir 文件存储的目录
name 该文件的名字
异常:
空指针 当 name 为空时
public File (String path)
通过指定的路径创建一个文件
参数:
path 作文件的路径
异常:
空指针 当 path 为空时
public File(String path,String name)
通过指定的目录路径和文件名称创建一个新的文件,在两者之间放置一个路径分割符。
参数:
dirPath 储文件的目录的路径。
name 文件的名称。
异常:
空指针 当 name 为空时。
public File (URI uri)
通过指定的 URI 路径创建新的文件。uri 需要是具有文件方案和非空路径组件的绝对和分层统一资源标识符,但具有未定义的权限,查询或片段组件。
参数:
uri 被用来创建文件的统一资源标识符。
异常:
空指针 当 uri 为空时。
非法参数 当 uri 不符合上述条件时。
Public Methods (公共方法)
public boolean canExecute()
测试此程序是否允许执行此文件。这是最好的努力结果,确定的唯一方法就是实际尝试操作。
返回值:
如果能执行返回 true ,否则返回 false。
public boolean canRead()
测试该文件在当前环境是否可读。
返回值:
如果可读返回 true ,否则返回 false。
public boolean canWrite()
测试该文件在当前环境是否可写。
返回值:
如果可写返回 true,否则返回 false。
public int compareTo(File another)
返回此文件和另一文件的路径的相对排序顺序。排序依赖于平台。
参数:
another 与该文件比较的文件。
返回值:
通过比较两个路径确定的一个 int 值。可比较的值在 Comparable 接口中描述。
public boolean createNewFile()
根据文件中存储的路径信息在文件系统上创建一个新的空文件。如果创建一个文件返回 true,如果文件已经存在返回 false。注意,即使这个文件不是一个文件(因为它是一个目录)也会返回 false。
这个方法通常不是有用的。如果创建一个临时文件的话使用 createTempFile(String ,String)方法代替。如果是读/写文件的话,用 FileInputStream,FileOutputStream,或是 RandmAccessFile,所有的这些都能创建文件。
注意,如果这个文件已经存在这个方法是不会拋出 IO 异常的,即使它不是一个常规的文件。用户应该始终检查返回值,此外还应调用 isFile()方法。
返回值:
如果文件被创建返回 ture ,如果文件已经存在返回 false。
异常:
IO 异常 如果不能创建文件。
public static File createTempFile(String prefix,String suffix,File directory)
在指定的目录创建一个文件,用指定的前缀和后缀作为文件名的一部分。如果后缀为空的话,则使用 .tmp。
注意,这个方法不会调用 deleteOnExit()方法,在手动调用该方法之前,请参阅该方法的文档。
参数:
prefix 空文件名的前缀
suffix 空文件名的后缀
directory 要写入临时文件的位置,如果为 null 的话就是默认位置,这个默认位置是来自于
“java.io.tmpdir” 系统属性。可能需要将此属性设置为现有的可写目录,以使此方法
正常工作。
返回值:
临时文件
异常:
参数非法 当前缀的长度小 3。
IO 异常 写入文件是出错。
public static File createTempFile(String prefix,String suffix)
创建一个临时的空文件,使用指定的前缀和后缀作为文件名的一部分。如果后缀为空的话,则使用 .tmp。当调用 createTempFile(String,String,File)方法,第三个参数为空时,使用该方法是方便的。
参数:
prefix 文件名的前缀
suffix 文件名的后缀
返回值:
临时文件
异常:
IO 异常 写入文件出错
public boolean delete()
删除这个文件。目录是空的才能删除这个文件。
注意,删除失败时这个方法不会拋出 IO 异常,用户必须要检查返回值。
返回值:
如果文件被删除返回 true,否则返回 false。
public void deleteOnExit()
当 VM 正常终止时,文件自动删除。
注意,在 Android 中,生命周期不包括 VM 的终止,因此调用这个方法不能确定文件是否被删除。所以你应该使用以下最有效的方法:
- 使用 finally 语句手动调用 delete()方法
- 把文件做为一个集合,在程序的生命周期的合适位置进行处理
- 当任意一个reader 或 writer 打开它时,就使用 Unix 的策略删除。没有新的readers/writers 能够访问该文件,但是所有现有的 readers/writers 将仍然可以访问,直到最后一个文件关闭。
public boolean equals(Object obj)
比较 obj 与这个文件,如果使用特定的路径比较他们代表同一个对象就返回 true。
返回值:
当 obj 与当前的 file 代表的是同一个对象返回 true 否则返回 false。
public boolean exists()
返回一个布尔值表示这个文件是否能在底层文件系统找到。
返回值:
当这文件存在时返回 true 否则返回 false。
public File getAbsoluteFile()
返回一个使用该文件的绝对路径创建的新的文件。等同于 new File(this.getAbsoluPath())。
public String getAbsolutePath()
返回该文件的绝对路径。绝对路径是开始于文件系统的根目录。在 Android 中只有一个根目录:/
绝对路径的一个常用方法是将路径作为命令行参数传递给进程,要移除相对路径所隐藏的要求,该子目录必须与其父目录有相同的工作目录。
public File getCanonicalFile()
返回用该文件的规范路径创建的新的文件。等同于 new File(this.getCanonicalPath())。
返回值:
用该文件的规范路径创建的新的文件。
异常:
IO 异常 发生 I/O 错误时。
public String getCanonicalPath()
返回该文件的规范路径。绝对路径是从文件系统的根开始的。规范路径是具有符号链接和引用 “.” 或 “..” 的绝对路径,如果路径元素不存在(或不可搜索),则将规范化解释为文本操作之间存在冲突(“a/../b” 的位置是 “b”,即使 “a” 不存在)。
大多数的用户应该使用 getAbsolutePath()代替它。规范的路径需要大量的计算,而且一般都是没用的。规范路径最常见的用法是,通过比较规范路径测试两个路径是否指向同一个文件。
使用规范路径可能是有害的,因为规范化删除了符号链接。假设一个符号链接是有原因的,这是明智的,因为链接可能需要改变。规范除去了这个间接层。好的代码一般避免缓存规范化路径。
返回值:
文件的规范化路径
异常:
IO 异常 当 IO 出现异常时。
public long getFreeSpace()
返回包含此路径的分区上的空空余字节数。返回 0 当路径不存在时。
注意,这可能是一个乐观的高估,不应被视为一个保证应用程序实际上可以写这么多字节。
public String getName()
返回由该文件表示的文件或目录的名称。
返回值:
该文件的名称或是一个空的字符串当该文件的路径没有名称部分。
public String getParent()
返回该文件的父文件的路径名称。
返回值:
该文件的父文件的路径名称或 null。
public File getParentFile()
返回由该文件的父文件的路径名称创建的一个新文件。这个路径直到但不包括最后一个名称。当该文件没有父文件时返回 null。
返回值:
由该文件的父文件的路径名称创建的新文件,或是 null。
public String getPath()
返回文件的路径。
public long getTotalSpace()
返回包含此路径的分区上的全部字节数。返回 0 如果文件不存在。
public long getUsableSpace()
返回包含此路径的分区上的可用字节数。返回 0 当此路径不存在时。
注意,这可能是一个乐观的高估,不应被视为一个保证应用程序实际上可以写这么多字节。在 Android(或是其他以 Unix 为基础的系统),此方法返回非 root 用户的可用字节数,不管你是否实际运行为root,也不管用户应用了其他任何配额或其他限制。(getFreeSpace 方法返回的字节数可能包含 root 的部分。)
public int hashCode()
返回接收器一个整型的哈希值。任何两个相同的对象一定返回一样的哈希值。
返回值:
文件的哈希值。
public boolean isAbsolute()
指示该文件的路径名是否是绝对的。路径名是否是绝对跟平台相关。在 Android 中绝对路径名开始于 '/' 字符。
返回值:
如果该文件的路径名是绝对的返回 true 否则返回 false。
public boolean isDirectory()
指示该文件在文件系统上是否是一个目录。
返回值:
如果该文件是一个目录返回 true 否则返回 false。
public boolean File()
指示该文件在文件系统上是否是一个文件。
返回值:*
如果是文件返回 true 否则返回 false。
public boolean isHidden()
指示该文件是否是一个由操作系统定义的隐藏文件。隐藏这个概念是由系统决定的。在 Unix 系统中,当文件名是以 “.” 开头的就被看作是隐藏的文件。对于 Windows 系统,在文件系统中有一个明确的标记来记录隐藏文件 。
返回值:
如果是隐藏文件返回 true 否则返回 false。
public long lastModifide()
返回该文件最后修改的时间,精确到毫秒从 1970 年 1 月 1 日凌晨开始算起。如果文件不存在返回 0。
返回值:
文件最后的修改时间。
public long length()
返回文件的字节长度。文件不存在返回 0.如果是目录则结果是未定义。
返回值:
文件的字节数。
public String[] list()
返回由该文件代表的目录中的文件名的字符串数组。如果文件不是目录则返回 null。
进入 . 和 .. 代表的是当前目录的父目录,不会作为该数组的一部分返回。
返回值:
该文件里的文件名的数组或 null。
public String[] list(FilenameFilter filter)
返回由该文件代表的目录中的文件的数组。这个数组将通过 FilenameFilter 和作为字符串返回的具有匹配名称的文件的名称被过滤。如果该文件不是目录返回 null。如果 filter 是 null 的话则所有的文件都可以匹配。
进入 . 和 .. 代表的是当前目录的父目录,不会作为该数组的一部分返回。
参数:
filter 匹配名称的筛选器,可以为 null。
返回值:
文件数组或 null。
public File[] listFiles()
返回由该文件代表的目录中的文件的数组。如果 file 不是目录则返回 null。如果该文件的路径是绝对路径,那么数组中的路径也是绝对路径,否则是相对路径。
返回值:
文件是数组或 null。
public static File[] lsitRoots()
返回文件系统的根。在 Android 或是其他 Unix 系统中,只有一个根 /。
public boolean mkdir()
由该文件创建一个目录,假设它的父目录是存在的。如果想要创建不存在的父目录使用 mkdirs()。
注意,当出现错误时这个方法不会抛出异常。用户必须检查返回值。 注意,当目录存在时返回 false。如果在返回时想要知道该文件是否存在,使用(f.mkdir() || f.isDirectory())或者忽略该方法的返回值直接调用 isDirectory().
返回值:
如果目录被创建返回 ture,如果发生错误或是目录已经存在返回 false。
public boolean mkdirs()
由该文件创建一个目录,并且创建所有必须但不存在的父目录。如果不想创建父目录使用 mkdir()。
注意,当出现错误时该方法不会抛出异常。用户必须要检查返回值。注意,如果当目录存在时返回 false。如果在返回时想知道目录是否存在,使用(f.mkdirs() || f.isDirctory())或者忽略该方法的返回值,直接调用 isDirctory().
返回值:
如果目录被创建返回 ture,如果发生错误或是目录已经存在返回 false。
pubic boolean renameTo(File newPath)
以新路径重命名文件。当两个都是文件或都是目录时该操作才能生效。
经常会发生一些错误。 一些更容易发生的错误包括:
- 在包含源和目标路径的目录上写入权限是必须的。
- 两个路径的父路径的查询权限是必须的。
- 两个路径都要在同一个挂载点上。在 Android 中,应用程序最有可能碰到这个限制,当试图在内部存储和 SD 卡之间复制时。
注意,当发生错误时该方法不会抛出异常。用户必须检查返回值。
参数:
newPath 新的路径
返回值:
成功时返回 true。
public boolean setExecutable(boolean executable)
等同于 setExecutable(executable,true).
public boolean setExecutable(boolean executable,boolean ownerOnly)
操作此文件指定的抽象路径的执行权限。
注意,当出现错误时该方法不会抛出异常,用户必须检查返回值。
参数:
executable 为 true 时允许执行权限,否则不允许。
ownerOnly 为 true 时只有自己有操作执行权限,否则就是所有人。如果底层系统不区分所有者和其他用户,则该操作将应用于每个人,而不考虑该值。
返回值:
当且仅当操作成功时返回 true。如果用户没有权限去更改该抽象路径的访问权限则操作失败。如果底层文件系统不支持执行权限或是 executable 的值为 false 时操作失败。
public boolean setLastModified(long time)
设置文件最后被修改的时间,精确到秒从 1970 年 1 月 1 日凌晨开始。
注意,出现错误时该方法不会抛出异常,用户必须检查返回值。
参数:
time 文件最后被修改的时间。
返回值:
如果操作成功返回 true,否则返回 false。
异常:
参数非法异常 当 time < 0.
public boolean setReadOnly()
等同于 setWritable(false,fasle).
public boolean setReadable(boolean raedable)
等同于 setReadable(readable,ture).
public boolean setReadable(boolean readable,boolean ownerOnly)
操作此文件指定的抽象路径的读取权限。
参数:
readable 为 true 时允许读的权限,否则不允许。
ownerOnly 为 true 时仅自己可操作读的权限,否则是所有人。 如果底层系统不区分所有者和其他用户,则该操作将应用于每个人,而不考虑该值。
*返回值:
当且仅当操作成功时返回 true。如果用户没有权限去更改该抽象路径的访问权限则操作失败。如果底层文件系统不支持执行权限或是 readable 的值为 false 时操作失败。
public boolean setWritable(boolean write,boolean ownerOnly)
操作此文件指定的抽象路径的写入权限。
*参数:
writable 为 ture 时允许写的权限,否则不允许。
ownerOnly 为 true 时仅自己可操作写的权限,否则是所有人。 如果底层系统不区分所有者和其他用户,则该操作将应用于每个人,而不考虑该值。
返回值:
当且仅当操作成功时返回 true。如果用户没有权限去更改该抽象路径的访问权限则操作失败。
public boolean setWritable(boolean writable)
等同于 setWritable(writable,ture).
public String toString()
返回一个简洁的、可读的描述该文件的字符串。
返回值:
描述文件的可打印的值。
public URI toURI()
返回文件的统一资源标识符。这个 URI 是由系统决定的,不能在不同的操作/文件系统之间转换。
返回值:
文件的 URI.
public URL toURL()
在 API 19 中该方法已经被废弃了。
使用 toURI() 和 toURL() 去正确的避开非法字符。
返回文件的统一资源定位符。URL 是由系统决定的,不能在不同的操作/文件系统之间转换。
返回值:
文件的 URL
异常:
MalformedURLException 当路径不能被转换为 URL 时。