一、File概述
java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
java把文件和文件夹(目录)封装为一个File类,我们可以使用File类对文件和文件夹进行操作。
File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法。
二、File静态变量
1.File.pathSeparator 和 File.pathSeparatorChar:路径分隔符,window是分号,linux是冒号。
2.File.separator 和 File.separatorChar:文件名称分隔符,window是反斜杠\,linux是正斜杆/。
三、绝对路径和相对路径
绝对路径:是一个完整的路径,是以盘符开始的路径:C:\Program Files\Common Files。
相对路径:是一个简化的路径,相对是指相对于当前项目的根目录,如果使用当前项目的根目录,路径可以简化书写。
注意:1.路径是不区分大小写的。
2.路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠。
四、File类的构造方法
1.File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例。
String pathname :字符串的路径名称。
路径可以是以文件结尾,也可以是以文件夹结尾。
路径可以是相对路径,也可以是绝对路径。
路径可以是存在,也可以是不存在的。
创建File对象,只要把字符串路径封装为File对象,不考虑路径真假情况。
代码示例:
File file1 = new File("E:\\a.txt");
System.out.println(file1);//返回结果:E:\a.txt
File file2 = new File("E:\\test");
System.out.println(file2);//返回结果:E:\test
File file3= new File("b.txt");
System.out.println(file3);//返回结果:b.txt
2.File(String parent, String child) 根据parent 路径名字符串和child路径名字符串创建一个新的File实例。
父路径和子路径,可以单独书写,使用起来非常灵活,父路径和子路径都可以变化。
代码示例:
String parent = "E:\\";
String child = "a.txt";
File file = new File(parent,child);
System.out.println(file);//返回结果:E:\a.txt
3.File(File parent, String child) 根据parent抽象路径名和child路径名字符串创建一个新File实例。
父路径和子路径,可以单独书写,使用起来非常灵活,父路径和子路径都可以变化。
父路径是File类型,可以使用File的方法对路径进行一些操作,在使用路径创建对象。
代码示例:
File parentFile = new File("E:\\");
File file = new File(parentFile,"a.txt");
System.out.println(file);//返回结果:E:\a.txt
4.File(URI uri) 通过将给定的file:URI转换为一个抽象路径来创建一个新的File实例。
代码示例:
try {
File file = new File(new URI("file:///c:/a.bat"));
System.out.println(file.getName());//结果:a.bat
} catch (URISyntaxException e) {
e.printStackTrace();
}
五、File类的常用方法
1.public String getAbsolutePath():返回此File的绝对路径名字符串。
File file1 = new File("E:\\filetest\\a.txt");
File file2 = new File("a.txt");
String absolutePath1 = file1.getAbsolutePath();
String absolutePath2 = file2.getAbsolutePath();
System.out.println(absolutePath1);//返回结果:E:\filetest\a.txt
System.out.println(absolutePath2);//返回结果:E:\filetest\a.txt
2.public String getPath():将此File转换为路径名称字符串。
File file1 = new File("E:\\filetest\\a.txt");
File file2 = new File("a.txt");
String path1 = file1.getPath();
String path2 = file2.getPath();
System.out.println(path1);//返回结果:E:\filetest\a.txt
System.out.println(path2);//返回结果:a.txt
3.public String getName():返回由此File表示的文件或目录的名称。
File file1 = new File("E:\\filetest\\a.txt");
File file2 = new File("E:\\filetest\\test");
String name1 = file1.getName();
String name2 = file2.getName();
System.out.println(name1);//返回结果:a.txt
System.out.println(name2);//返回结果:test
4.public long length():返回由此File表示的文件的长度。获取的是构造方法指定的文件大小,以字节为单位,
文件夹是没有大小概念的,不能获取文件夹大小,如果构造方法中给出的路径不存在,那么length方法返回值为0。
File file1 = new File("E:\\a.jpg");//存在这张图片
long length1 = file1.length();
System.out.println(length1);//241351
File file2 = new File("E:\\b.jpg");//不存在这个图片
long length2 = file2.length();
System.out.println(length2);//0
5.public boolean exists():此File表示的文件或目录是否实际存在,存在 true,不存在false。
File file = new File("E:\\maven"); System.out.println(file.exists());//true
6.public boolean isDirectory():用于判断构造方法中给定的路径是否以文件夹结尾。
public boolean isFile():用于判断构造方法中给定的路径是否以文件结尾。
7.public boolean createNewFile():当且仅当具有该名称的文件尚不存在时,创建一个空文件。创建文件的路径和名称存在构造方法中,文件不存在,创建文件,返回true;文件存在,不创建,返回false。次方法只能创建文件,不能创建文件夹,创建文件的路径必须存在,否则抛出异常。
try { File file = new File("E:\\1.txt"); boolean newFile = file.createNewFile(); System.out.println(newFile);//true } catch (IOException e) { e.printStackTrace(); }
再执行一遍上面代码返回false。
8.public boolean mkdir():创建单级空文件夹
public boolean mkdirs():可以创建单级空文件夹,也可以创建多级文件夹。创建文件的路径和名称存在构造方法中,文件夹不存在,创建文件,返回true;文件夹存在,不创建,返回false,构造方法中给出的路径不存在返回false。次方法只能创建文件夹,不能创建文件。
try { File file = new File("E:\\fileTest\\aa\\bb\\cc"); boolean newFile = file.mkdirs(); System.out.println(newFile);//true } catch (Exception e) { e.printStackTrace(); }
9.public boolean delete():删除由此File表示的文件或目录。可以删除文件或文件夹。
文件/文件夹删除成功返回true,文件夹中有内容,不会删除返回false,路径不存在返回false。该方法直接在硬盘删除文件或者文件夹,不会走回收站。
10.public String[] list():返回一个String数组,表示该File目录中的所有子文件或文件夹。遍历构造方法中给出的目录,会获取目录中所有文件或文件夹的名称,把获取到的多个名称存储到一个String类型的数组中。
File file = new File("F:\\apache-tomcat-7.0.96\\apache-tomcat-7.0.96"); String[] list = file.list(); for (String fileName : list){ System.out.println(fileName); }
11.public File[] listFiles():返回一个File数组,表示该File目录中的所有的子文件或者目录。遍历构造方法中给出的目录,会获取目录中所有的文件或文件夹,把文件或文件夹封装为File对象。多个File对象存储到File数组中。
File file = new File("F:\\apache-tomcat-7.0.96\\apache-tomcat-7.0.96"); File[] files = file.listFiles(); for (File f : files){ System.out.println(f.getName()); }