File

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,978评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,954评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,623评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,324评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,390评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,741评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,892评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,655评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,104评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,569评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,254评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,834评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,725评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,950评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,260评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,446评论 2 348

推荐阅读更多精彩内容