File类
1.1 概述
java.lang.io.File类是文件 (file) 和文件夹/目录 (directory) 、路径名 (path) 的抽象形式,可以对文件和目录的创建、查找和删除等操作的类。例如:
1. 创建一个文件\文件夹
2. 删除文件\文件夹
3. 获取文件\文件夹
4. 判断文件\文件夹是否存在
5. 对文件夹进行遍历
6. 获取文件的大小
注意:File类是一个与系统无关的类,任何操作系统都可以使用这个类中的方法。
1.2 静态成员变量
这里直接写一个案例来帮助大家了解了
/*
static String pathSeparator //String类型的路径分隔符
static char pathSeparatorChar //char类型的路径分割符
static String separator //String类型的文件名称分隔符
static char separatorChar //char类型的文件名称分隔符
*/
public class Demo01{
public static void main(String[] args){
String pathSeparator = new File.pathSeparator;
System.out.println(pathSeparator); //这里Windows输出的是分号(;) 而Linux输出的则是冒号(:)
String separator = new File.separator;
System.out.println(separator); //这里Windows输出的是\ 而Linux会输出/
//因此需要注意我们需要操作路径的时候不能直接写成这样了,因为不利于在不同系统上使用:
//C:\Users\ASUS Windows C:/Users/ASUS Linux
//可以使用这样子写,保证安全性:"C:"+File.separator+"Users"+File.separator+"ASUS"
}
}
1.3 构造方法
File(String pathname):
参数:pathname是路径的名称。它可以是文件结尾,也可以是文件夹结尾;可以是相对路径,也可以是绝对路径;可以是存在的路径,也可以是不存在的。创建对象时它只是把路径封装成File类型,是不考虑路径的真假的。
File(String parent,String child):
参数: parent表示父路径,child表示子路径;他们是可以单独写,子路径和父路径都可以变化,使用起来十分灵活。例如:
System.out.println(new File("C:","a.txt"); //输出C:\a.txt
System.out.println(new File("D:","a.txt"); //输出D:\a.txt
File(File parent,String child):
参数:注意pathname的类型为File类型了,可以直接方便在对parent这个File对象进行操作后,再在此基础上接着创建。
1.4 常用方法
1.4.1 获取功能的方法
public String getAbsolutePath(); //获取并返回File对象的绝对路径
public String getPath(); //获取并返回File的对象路径,在构造时是绝对路径获取的就是绝对路径,是相对路径,就获取相对路径
public String getName(); //返回路径的结尾部分,结尾是文件名就返回文件名,是文件夹就返回文件夹名
public long length(); //获取的是构造方法中指向的文件的大小,字节为单位
/*值得注意的是最后一个length();方法是不能获取文件夹的大小,因为文件夹是没有大小概念的
其次若File对象所代表的文件的路径不存在,则返回0 */
1.4.2 判断功能的方法
public boolean exists(); //判断此File对象所表示的目录是否存在,存在返回True,否则返回false
//注意下面这两个方法,路径一定要是真实存在的才有判断的意义,且两个方法是互斥的
public boolean isDirectory(); //此File对象表示的是否为目录(文件夹)结尾
public boolean ifFile(); //此File对象表示的是否为文件结尾
1.4.3 创建删除功能的方法
/*public boolean createNewFile(); 当文件且仅当文件不存在的时候创建一个新的文件,
File对象在构造时创建文件的路径一定要存在,否则会抛异常,
同时此方法中申明了一个IOException异常,需要我们声明一下*/
//下面是例子:
//在构造File对象时,写好想要创建的文件的路径
File f = new File("C:"+File.separator+"Users"+File.separator+"a.txt");
boolean flag = f.createNewFile();//返回true则表示创建成功
File f.1 = new File("C:"+File.separator+"U"+File.separator+"a.txt");
boolean flag1 = f1.createNewFile();//比如我的系统中是不存在C:\U这个路径的,则创建时会抛异常
//-----------------------------------------------
public boolean mkdir(); //创建单级文件夹
public boolean mkdirs(); //创建多级文件夹
//和上面创建文件的方法差不多,在构造File对象时,单级的时候一定要把想要创建的路径设置成存在的
//----------------------------------------------
public boolean delete(); //删除由File对象表示的文件或者目录
/*删除成功返货True 文件夹中有内容不会被删除将返回false,File对象表示的路径不存在也返回false
**同时值得注意的是**:此方法是直接从硬盘中删除文件,不会放入回收站中 */
1.4.4 遍历
public String[] list(); //返回Sting类型数组,表示File对象对表示的文夹中所有的子文件或者文件夹,接收的其实就是名称
public File[] listFile(); //返回一个Files数组,表示File对象对表示的文夹中所有的子文件或者文件夹
/*list 和 listFiles方法遍历的是构造方法中给出的目录(文件夹),
如果路径不存在会抛出空指针异常,如果构造方法中给出的路径不是一个目录,
也会抛空指针异常,这两个方法隐藏文件也会被遍历*/
* 附加知识点
路径
绝对路径: 就表示是一个完整的路径,以盘符(C:)开始的路径,如C:\a.text
相对路径: 是一个简化的路径,如果我们的项目已经在C盘下,路径可以简化书写成 a.text
注意:路径是不区分大小写的;在Windows系统中路径中文件的分隔符是反斜杠(),在Java中反斜杠是转义字符,两个反斜杠才表示普通显示的反斜杠。