Java IO(二)File
Java IO(二)File
一、概述
在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象,也就是说,如果希望在程序中操作文件和目录,则都可以通过 File 类来完成。File 类定义了一些方法来操作文件,如新建、删除、重命名文件和目录等。
File 是“文件”和“目录路径名”的抽象表示形式。
File 直接继承于Object,实现了Serializable接口和Comparable接口。实现Serializable接口,意味着File对象支持序列化操作。而实现Comparable接口,意味着File对象之间可以比较大小;File能直接被存储在有序集合(如TreeSet、TreeMap中)。
File 类不能访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。
二、File构造方法
三、FIle主要成员属性
四、常用API
boolean canExecute() // 测试应用程序是否可以执行此抽象路径名表示的文件。 boolean canRead() // 测试应用程序是否可以读取此抽象路径名表示的文件。 boolean canWrite() // 测试应用程序是否可以修改此抽象路径名表示的文件。 int compareTo(File pathname) // 按字母顺序比较两个抽象路径名。 boolean createNewFile() // 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 static File createTempFile(String prefix, String suffix) // 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。 static File createTempFile(String prefix, String suffix, File directory) // 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。 boolean delete() // 删除此抽象路径名表示的文件或目录。 void deleteOnExit() // 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。 boolean equals(Object obj) // 测试此抽象路径名与给定对象是否相等。 boolean exists() // 测试此抽象路径名表示的文件或目录是否存在。 File getAbsoluteFile() // 返回此抽象路径名的绝对路径名形式。 String getAbsolutePath() // 返回此抽象路径名的绝对路径名字符串。 File getCanonicalFile() // 返回此抽象路径名的规范形式。 String getCanonicalPath() // 返回此抽象路径名的规范路径名字符串。 long getFreeSpace() // 返回此抽象路径名指定的分区中未分配的字节数。 String getName() // 返回由此抽象路径名表示的文件或目录的名称。 String getParent() // 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。 File getParentFile() // 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。 String getPath() // 将此抽象路径名转换为一个路径名字符串。 long getTotalSpace() // 返回此抽象路径名指定的分区大小。 long getUsableSpace() // 返回此抽象路径名指定的分区上可用于此虚拟机的字节数。 int hashCode() // 计算此抽象路径名的哈希码。 boolean isAbsolute() // 测试此抽象路径名是否为绝对路径名。 boolean isDirectory() // 测试此抽象路径名表示的文件是否是一个目录。 boolean isFile() // 测试此抽象路径名表示的文件是否是一个标准文件。 boolean isHidden() // 测试此抽象路径名指定的文件是否是一个隐藏文件。 long lastModified() // 返回此抽象路径名表示的文件最后一次被修改的时间。 long length() // 返回由此抽象路径名表示的文件的长度。 String[] list() // 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 String[] list(FilenameFilter filter) // 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。 File[] listFiles() // 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 File[] listFiles(FileFilter filter) // 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 File[] listFiles(FilenameFilter filter) // 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 static File[] listRoots() // 列出可用的文件系统根。 boolean mkdir() // 创建此抽象路径名指定的目录。 boolean mkdirs() // 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 boolean renameTo(File dest) // 重新命名此抽象路径名表示的文件。 boolean setExecutable(boolean executable) // 设置此抽象路径名所有者执行权限的一个便捷方法。 boolean setExecutable(boolean executable, boolean ownerOnly) // 设置此抽象路径名的所有者或所有用户的执行权限。 boolean setLastModified(long time) // 设置此抽象路径名指定的文件或目录的最后一次修改时间。 boolean setReadable(boolean readable) // 设置此抽象路径名所有者读权限的一个便捷方法。 boolean setReadable(boolean readable, boolean ownerOnly) // 设置此抽象路径名的所有者或所有用户的读权限。 boolean setReadOnly() // 标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。 boolean setWritable(boolean writable) // 设置此抽象路径名所有者写权限的一个便捷方法。 boolean setWritable(boolean writable, boolean ownerOnly) // 设置此抽象路径名的所有者或所有用户的写权限。 String toString() // 返回此抽象路径名的路径名字符串。 URI toURI() // 构造一个表示此抽象路径名的 file: URI。 URL toURL() // 已过时。 此方法不会自动转义 URL 中的非法字符。建议新的代码使用以下方式将抽象路径名转换为 URL:首先通过 toURI 方法将其转换为 URI,然后通过 URI.toURL 方法将 URI 装换为 URL。
五、实例
(一)、新建目录
新建目录需要调用 boolean mkdir() ,当且仅当目标目录不存在时,通过实例File对象新建目录。
1、根据相对路径创建
File file = new File("dir"); boolean isMake = file.mkdir();
2、根据绝对路径创建
File file = new File("E:\\dir"); boolean isMake = file.mkdir();
(二)、新建文件
新建目录需要调用 boolean createNewFile() ,当且仅当文件不存在时,通过File对象新建文件。
1、根据相对路径创建
try { File file = new File("test.txt"); boolean isCreate = file.createNewFile(); } catch (IOException e) { e.printStackTrace(); }
2、根据绝对路径创建
try { File file = new File("E:\\dir\\test.txt"); boolean isCreate = file.createNewFile(); } catch (IOException e) { e.printStackTrace(); }
3、判断文件或者文件夹
判断抽象路径名通过 boolean isFile() 方法判断是否文件,通过 boolean isDirectory() 方法判断是否是文件夹。
try { File file = new File("E:\\dir\\test.txt"); // 判断是否是文件 boolean isFile = file.isFile(); // 判断是否是文件夹 boolean isDirectory = file.isDirectory(); } catch (Exception e) { e.printStackTrace(); }
4、列举抽象路径名下文件或者文件夹
列举抽象路径名下的所有文件或者文件夹,可以通过 String[] list() 和 File[] listFiles() 方法,前者返回文件或者文件夹相对路径名 String 数组,或者返回绝对路径名的文件或者文件夹的 File 对象数组。
try { File file = new File("E:\\dir"); String[] files = file.list(); File[] fs = file.listFiles(); } catch (Exception e) { e.printStackTrace(); }