File类概述
Java语言中File类是唯一表示文件对象和目录对象的数据类型。在Java语言中文件路径分隔符使用‘/’或‘\\’(‘\\’中两个斜线分别代表转译字符和分隔符)
文件可以存储字节或字符;目录不能直接存储字节或字符,只能存储文件后子目录。
文件可以被读取和写入,而目录不能执行读写操作,只能建立,删除及获取其中包含的子目录及文件。
对于文件 和目录通常要严格区分,File类提供方法可以判断此File对象是文件还是目录。
File类对象的创建(创建文件对象)
- File(File dir,String child):根据parent抽象路径名和child路径名字符串创建一个新File实例
- File(String pathName):通过将给定路径字符串转换为抽象路径名来创建一个新的File实例(仅可创建文件对象,若目录不存在不会创建目录)
- File(String parent,String child):根据parent路径名字符串和child路径名字符串创建一个 新File实例(与第一个类似,区别在于第一个需要给定一个File的实例对象作为参数)
- File(URL uri):通过给定的file:URI转化为一个抽象路径名来创建一个新的File实例(URI是Java已有的类,该对象表示一个文件路径)
抽象路径:可以由自己创建的路径名,可以存在也可以不存在,如果不存在在创建文件时需要 先调用mkdir否则系统找不到指定路径
/*
* 通过将给定路径字符串转换为抽象路径名来创建文件对象
*/
String pathName = "d:/one.txt";
File file = new File(pathName);
System.out.println(file == null);//无论给定的文件虚拟路径是否存在,file一定不是空的。创建文件对象!=该文件在硬盘中存储
/*
* 根据parent抽象路径名和child路径名字符串创建一个新File实例
*/
File file2 = new File(new File("d:/"),"two.txt");
/*
* 根据parent路径名字符串和child路径名字符串创建一个 新File实例
*/
File file3 = new File("d:/","three.txt");
/*
* 通过给定的file:URI转化为一个抽象路径名来创建一个新的File实例
*/
URI uri = URI.create("file:/d:/four.txt");//创建URI对象时,路径前需要加上file:/
File file4 = new File(uri);
File类常用方法
- public boolean canWrite():判断是否能修改该文件
- public boolean canRead():判断是否能读取该文件
- public boolean createNewFile() throws IOException():创建一个新文件,判断是否创建成功
- public boolean delete():删除此文件,并判断是否删除成功
- public boolean exist():判断文件是否存在(在硬盘上存储,而非该对象是否存在)
/*
* 创建文件对象
*/
String path = "d:/one.txt";
File file = new File(path);
/*
* 判断文件是否存在
*/
System.out.println(file.exists());//输出结果为false,因为仅仅创建了文件对象,并没有在硬盘上存储该文件
/*
* 创建一个新文件
*/
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(file.exists());//此时输出结果为true
/*
* 判断文件能否修改与读取
*/
System.out.println(file.canRead());//判断文件是否能正常读取
System.out.println(file.canWrite());//判断文件是否能正常修改
/*
* 删除文件
*/
file.delete();
System.out.println(file.exists());//删除后输出为false
- public String getAbsolutePath():获取整个文件的绝对路径
- public String getName():获取文件名
- public String getParent():获取文件的父目录
- public String getPath():获取构造文件时的路径
- public bolean isDirectory():判断是否是目录
- public boolean isFile():判断是否是文件
- public File[] listFiles():获取当前目录下所有文件组成的File数组
- public boolean mkdir():创建目录并判断是否创建成功,只能创建一级目录
- public boolean mkdirs():创建目录并返回i是否创建成功,可以创建一级或多级目录
/*
* 创建文件对象
*/
String pathName = "d:/one.txt";
File file = new File(pathName);
/*
* 创建一个新文件
*/
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
/*
* 获取文件路径
*/
String absolutePath = file.getAbsolutePath();//默认绝对路径,从磁盘名到文件名的全路径
String path = file.getPath();//默认相对路径,得到的是构造file时的路径
/*
* 获取文件名
*/
String name = file.getName();//结果:one.txt
/*
* 获取父目录
*/
String parent = file.getParent();//结果:d:/
/*
* 判断是目录还是文件
*/
file.isFile();//结果:true
file.isDirectory();//结果:false
/*
* 创建目录
*/
File file2 = new File("d:/one");
file2.mkdir();//返回true
File file3 = new File("d:/1/2");
file3.mkdir();//返回false
file3.mkdirs();//返回true
/*
* 获取目录下所有文件名
*/
File file4 = new File("d:/a");
file4.mkdir();
for(int i=1;i<=10;i++) {
File file5 = new File("d:/a/"+i);
try {
file5.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}//以上为创建即将提取的目录
File []files = file4.listFiles();//获取文件数组
for(File f:files) {
System.out.print(f.getName()+" ");
}
文中相似方法对比简析
- 构造器File(File dir,String child)与File(String parent,String child):区别在于后者父路经以字符串为参数转换而前者是已存的File对象的抽象路径
- 获取文件路径方法public String getPath()与public String getAbsolutePath():区别在于前者获取的是构造对象的文件路径,如果构造对象的路径为全路径则得到全路径,即默认相对路径;而后者任何情况都获取全路径,及默认绝对路径
- 创建目录方法public boolean mkdir()与public boolean mkdirs():区别在于前者只能创建一级目录,在创建多级目录时返回值为false,而后者可以创建一级或者多级目录