目录
一、File类概述
File类是java.io包中唯一代表磁盘文件本身的对象。File类(java.io.File)是专门对文件进行操作的类,只能对文件本身进行操作,不能对文件内容进行操作。File类与OS无关,但是会受OS权限的限制。File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建、删除、重命名文件等操作。File类的对象主要用来获取文件本身的一些信息,如文件所在的目录、文件的长度、文件读写权限等。数据流可以将数据写入到文件中,文件也是数据流最常用的数据媒体。
二、File函数列表
// 静态成员
public static final String pathSeparator // 路径分割符":"
public static final char pathSeparatorChar // 路径分割符':'
public static final String separator // 分隔符"/"
public static final char separatorChar // 分隔符'/'
// 构造函数
File(File dir, String name)//该构造方法根据parent抽象路径名和child路径名字符串创建一个新File实例。
File(String pathname)//该构造方法通过将给定路径名字符串转换为抽象路径名来创建一个新File实例。
File(String dirPath, String name)//该构造方法根据定义的父路径和子路径字符串(包含文件名)创建一个新的File对象。
File(URI uri)//
// 成员函数
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。
三、新建目录的常用方法
方法1:根据相对路径新建目录
File dir = new File("dir"); //在当前路径下新建目录“dir”
dir.mkdir(); //创建此抽象路径名指定的目录
方法2:根据绝对路径新建目录
File dir = new File("E:/dir"); //新建目录"E:/dir"
dir.mkdir();
方法3
//与方法2类似,只不过“方法2”中传入的是完整路径,而“方法3”中传入的是完整路径对应URI。
URI uri = new URI("E:/dir");
File dir = new File(uri);
sub.mkdir();
四、新建子目录的常用方法
如果我们想要在"dir"目录下,再新建一个子目录,常用方法如下:
方法1:
//在当前目录下 "dir/sub1"。它能正常运行的前提是“sub1”的父目录“dir”已经存在!
File sub1 = new File("dir", "sub1");
sub1.mkdir();
方法2:
//在当前目录下 "dir/sub2"。它能正常运行的前提是“sub2”的父目录“dir”已经存在!
File sub2 = new File(dir, "sub2");
sub2.mkdir();
方法3:
//在当前目录下 "dir/sub3"。它不需要dir已经存在,也能正常运行;若“sub3”的父目录不存在,mkdirs()方法会自动创建父目录。
File sub3 = new File("dir/sub3");
sub3.mkdirs();
方法4:
//在当前目录下 "dir/sub4"。它不需要dir已经存在,也能正常运行;若“sub4”的父目录不存在,mkdirs()方法会自动创建父目录。
File sub4 = new File("E:/dir");
sub4.mkdirs();
方法5:
// 和“方法4”类似,只不过“方法4”中传入的是完整路径,而“方法5”中传入的是完整路径对应URI。
URI uri = new URI("E:/io/dir");
File dir = new File(uri);
sub.mkdirs();
五、新建文件的常用方法
如果我们要在目录下新建文件,常用的方法如下:
注:通常情况下创建文件会添加异常处理,此处简略了。
方法1:
//在“dir”目录下(相对路径)新建“1.txt”文件
File dir = new File("dir");
File file1 = new File(dir,"1.txt");
file1.createNewFile();
方法2:
//在“dir”目录下(相对路径)新建“2.txt”文件
File file2 = new File("dir","2.txt");
file2.createNewFile();
方法3:
//在绝对路径("E:/dir")下新建“3.txt”文件
File file3 = new File("E:/dir/3.txt");
file3.createNewFile();
方法4:
//在绝对路径("E:/dir")下新建“4.txt”文件
URI uri = new URI("E:dir/4.txt");
File file4 = new File(uri);
file4.createNewFile();
六、实例
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.text.SimpleDateFormat;
public class FileTest01 {
public static void main(String args[])
{
File dir = new File("E:/dir");//新建目录
dir.mkdirs();
File file = new File("E:/dir/word.txt");//新建文件
if(file.exists())//建议文件是否存在
{
String name = file.getName();//获取文件的名称
System.out.println("文件名称:"+name);
long length = file.length();//获取文件的长度
System.out.println("文件长度:"+length);
Boolean hidden = file.isHidden();//判断文件是否为隐藏文件
System.out.println("是否隐藏:"+hidden);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
String lasttime = df.format(new Date(file.lastModified()));//文件最后修改时间
//long lastModified = file.lastModified();这样直接得到是一个long类型的值,是该时间与历元(1970 年 1 月 1 日,00:00:00 GMT)的时间差(以毫秒为单位)
System.out.println("修改时间:"+lasttime);
boolean isfile = file.isFile();//文件是否存在
System.out.println("是否存在:"+isfile);
//file.delete();
//System.out.print("文件已删除");
}
else
{
try {
file.createNewFile();
System.out.println("文件创建成功");
}catch(IOException e) {
e.printStackTrace();
}
}
}
}