知识模块
一.File类
a.基础概念
b.绝对路径和相对路径
c.File类中的方法
如果需要详细源码可以去下方链接gitte查看
JavaSE: Java基础
一.File类
a.基础概念
我们在操作系统中(widows,linux,mac os)中经常操作两种数据:文件和文件夹
操作系统通过路径来唯一定位一个文件或文件夹
xx省xx市xx县xx街道xx小区xx单元xx门牌号 收件地址就类似操作系统中的路径
文件:File
文件夹:Directory(dir)
路径:path
b.绝对路径和相对路径
1.绝对路径:以盘符开头的路径
新建一个my_project工程,目录如下
my_project
1.txt
1.txt的绝对路径 D:\java_vev\workspace\java-se\my_project\src\1.txt
2.相对路径:指的是一个文件或一个文件夹相对于另一个文件或文件夹的路径
在IDEA工程下的文件或文件夹的相对参照物就是 当前工程
my_project的绝对路径:
D:\java_vev\workspace\java-se\my_project
1.txt的绝对路径
D:\java_vev\workspace\java-se\my_project\src\1.txt
1.txt的相对路径:(去除当前文件或文件夹和参照物两者相同的路径即可)
去除 D:\java_vev\workspace\java-se\my_project 路径:src\1.txt
2.txt的绝对路径:
D:\java_vev\workspace\java-se\my_project\2.txt
2.txt的相对路径: 2.txt
c.File类中的方法
1.构造方法
File类的构造方法:
File类的构造方法:不会检测传入的路径是否在硬盘上真实存在
File(String pathname)
pathname:路径名 既可以传相对路径,也可以传绝对路径
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child)
parent:父级路径 一般传入文件或文件夹前面的路径
child :子级路径 一般传入文件或文件夹
最终的路径就是将parent和child拼接的路径
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
import java.io.File;
/*
File类的构造方法:
File类的构造方法:不会检测传入的路径是否在硬盘上真实存在
File(String pathname)
pathname:路径名 既可以传相对路径,也可以传绝对路径
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child)
parent:父级路径 一般传入文件或文件夹前面的路径
child :子级路径 一般传入文件或文件夹
最终的路径就是将parent和child拼接的路径
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
*/
public class FileDemo01 {
public static void main(String[] args) {
//method01();
//method02();
File parent = new File("D:/java_vev/workspace/java-se/Project_JavaSE/Day22/");//将父级路径封装成一个File对象
File file = new File(parent, "1.txt");
System.out.println(file);//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\1.txt
}
private static void method02() {
File file = new File("D:/java_vev/workspace/java-se/Project_JavaSE/Day22/", "1.txt");
System.out.println(file);//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\1.txt
File file2 = new File("D:/java_vev/workspace/", "java-se/Project_JavaSE/Day22/1.txt");
System.out.println(file2);//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\1.txt
File file3 = new File("M:/java_vev/workspace/", "java-se/Project_JavaSE/Day22/1.txt");
System.out.println(file3);//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\1.txt
File file4 = new File("D:/java_vev/", "java-se/Project_JavaSE/Day22/1.txt");
System.out.println(file4);//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\1.txt
}
private static void method01() {
//java中的转义字符都是以/开头的:\n 换行
System.out.println("\nab\nc");
//System.out.println("\a"); //\a不是Java中的转义字符,因此解析不了
System.out.println("\\a"); // \\的含义,第一个\将第二个\转义为普通的\字符
//File file = new File("D:\\java_vev\\workspace\\java-se\\Project_JavaSE\\Day22\\1.txt");
File file = new File("D:/java_vev/workspace/java-se/Project_JavaSE/Day22/1.txt");
}
}
2.成员方法
1.判断方法
File类中的判断功能:
boolean exists()
如果指定的路径存在该文件或文件夹那么结果为true,当前路径不存在该文件或文件夹就返回false
boolean isDirectory()
如果当前路径不是一个目录,结果返回false,如果是目录,返回true
如果路径在硬盘上不存在,结果返回false
boolean isFile()
如果当前路径不是一个文件,结果返回false,如果是文件,返回true
如果路径在硬盘上不存在,结果返回false
import java.io.File;
/*
File类中的判断功能:
boolean exists()
如果指定的路径存在该文件或文件夹那么结果为true,当前路径不存在该文件或文件夹就返回false
boolean isDirectory()
如果当前路径不是一个目录,结果返回false,如果是目录,返回true
如果路径在硬盘上不存在,结果返回false
boolean isFile()
如果当前路径不是一个文件,结果返回false,如果是文件,返回true
如果路径在硬盘上不存在,结果返回false
*/
public class FileDemo02 {
public static void main(String[] args) {
//method01();
File file1 = new File("Day22/1.txt");
System.out.println(file1.isDirectory());//false
System.out.println(file1.exists());//true
File file2 = new File("Day22/2.txt");
System.out.println(file2.isDirectory());//false
System.out.println(file2.exists());//false
File file3 = new File("Day22/abc");
System.out.println(file3.isDirectory());//true
System.out.println(file3.isFile());//false
}
private static void method01() {
File file = new File("D:\\java_vev\\workspace\\java-se\\Project_JavaSE\\Day22\\1.txt");
System.out.println(file.exists());//true
File file2 = new File("D:\\java_vev\\workspace\\java-se\\Project_JavaSE\\Day22\\2.txt");
System.out.println(file2.exists());//false
/* File file3 = new File("1.txt");
System.out.println(file3.exists());//false*/
//1.txt的绝对路径:D:\java_vev\workspace\java-se\Project_JavaSE\Day22\1.txt
//Java_Project的绝对路径: D:\java_vev\workspace\java-se\Project_JavaSE
//1.txt相对的是Java_Project工程的路径,而不是相对于Day22这个模块的路径
File file3 = new File("Day22/1.txt");
System.out.println(file3.exists());//true
File file4 = new File("Day22/abc");
System.out.println(file4.exists());//true
}
}
2.创建方法
File类的创建功能:
boolean createNewFile()
可以根据绝对路径或者相对路径创建一个空文件,如果创建成功,返回true
如果指定的路径中当前文件已经存在,那么ceeatNewFile()不在创建该文件,而且返回false
如果指定的路径在内存中不存在,那么直接抛出IOException 系统找不到指定的路径
File类中的创建功能
boolean mkdir()
根据指定的路径创建文件夹,如果创建成功,返回true
如果指定的路径表示该文件夹已存在,那么mkdir()方法不再创建该文件,结果返回false
mkdir()只能创建文件夹,不能创建文件
mkdir()方法不能创建多级文件夹,只能创建单级文件夹
boolean mkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
mkdir()方法既可以创建单级目录,又可以创建多级目录
import java.io.File;
import java.io.IOException;
/*
File类的创建功能:
boolean createNewFile()
可以根据绝对路径或者相对路径创建一个空文件,如果创建成功,返回true
如果指定的路径中当前文件已经存在,那么ceeatNewFile()不在创建该文件,而且返回false
如果指定的路径在内存中不存在,那么直接抛出IOException 系统找不到指定的路径
*/
public class FileDemo03 {
public static void main(String[] args) throws IOException {
File file = new File("Day22/2.txt");
System.out.println(file.createNewFile());//true
File file2 = new File("Day22/1.txt");
System.out.println(file2.createNewFile());//false
File file3 = new File("M:/Day22/1.txt");//"main" java.io.IOException: 系统找不到指定的路径。
System.out.println(file3.createNewFile());//false
}
}
import java.io.File;
/*
File类中的创建功能
boolean mkdir()
根据指定的路径创建文件夹,如果创建成功,返回true
如果指定的路径表示该文件夹已存在,那么mkdir()方法不再创建该文件,结果返回false
mkdir()只能创建文件夹,不能创建文件
mkdir()方法不能创建多级文件夹,只能创建单级文件夹
boolean mkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
mkdir()方法既可以创建单级目录,又可以创建多级目录
*/
public class FileDemo04 {
public static void main(String[] args) {
//method01();
/* File file = new File("Day22/ghk/lm");
System.out.println(file.mkdir());//false*/
File file2 = new File("Day22/ghk/lm");
System.out.println(file2.mkdirs());//true
}
private static void method01() {
/* File file = new File("Day22/def");
System.out.println(file.mkdir());//true*/
/* File file2 = new File("Day22/abc");
System.out.println(file2.mkdir());//false*/
File file3 = new File("Day22/3.txt");
System.out.println(file3.mkdir());
}
}
3.删除功能:
File类的删除功能:
boolean delete()
删除此抽象路径名表示的文件或目录。
File类的delete()方法删除文件或文件夹不走回收站
File类的delete()方法只能删除一个空件夹,如果想要删除一个非空文件夹,需要先删除这个文件夹中的所有内容,然后再删除该文件
ghk
abc
def
1.txt
delete()方法既可以删除一个文件也可以删除一个文件夹,如果删除成功返回true,否则返回false
/*
File类的删除功能:
boolean delete()
删除此抽象路径名表示的文件或目录。
File类的delete()方法删除文件或文件夹不走回收站
File类的delete()方法只能删除一个空件夹,如果想要删除一个非空文件夹,需要先删除这个文件夹中的所有内容,然后再删除该文件
ghk
abc
def
1.txt
delete()方法既可以删除一个文件也可以删除一个文件夹,如果删除成功返回true,否则返回false
*/
public class FileDemo05 {
public static void main(String[] args) {
//method01();
/* File file = new File("Day22/3.txt");
System.out.println(file.delete());//true*/
/*File file2 = new File("Day22/ghk");
System.out.println(file2.delete());//false*/
File file3 = new File("Day22/ghk/lm");
System.out.println(file3.delete());//true
File file4 = new File("Day22/ghk");
System.out.println(file4.delete());//true
}
private static void method01() {
File file = new File("Day22/2.txt");
System.out.println(file.delete());//true
}
}
4.获取功能
File类的获取功能:
String getName()
返回的是路径中的最后一级路径(文件或文件夹)
String getPath()
如果File对象中封装的是相对路径,那么getPath结果就是相对路径
如果File对象中封装的是绝对路径,那么getPath结果就是绝对路径
long length()
获取文件的长度,单位是byte
不能获取文件夹的长度
String getParent()
该方法返回父级路径(最后一级路径前面的路径)
如果该路径只有一级路径(没有父级路径),结果为null
File getParentFile()
返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
File getAbsoluteFile()
无论File对象中封装的是什么路径,最终都返回以一个绝对路径
String getAbsolutePath()
无论File对象中封装的是什么路径,最终都返回以一个绝对路径
File类的获取功能
String[] list()
获取指定路径下的文件或文件夹的名称,将这些名称封装到一个字符串数组中,返回这个字符串数组
只能获取一级文件夹下的内容,子级文件夹下的内容获取不到
如果路径表示一个文件路径,该方法返回null,遍历null会报 java.lang.NullPointerException
File[] listFiles()
获取指定路径下的文件或文件夹的路径,将这些路径封装到一个file[]数组中,然后返回该数组
如果指定的文件夹路径是相对路径,那么将来输出File[]数组中的file对象,最终结果都是一个个相对路径
如果指定的文件夹路径是绝对路径,那么将来输出File[]数组中的file对象,最终结果都是一个个绝对路径
只能获取一级文件夹下的内容,子级文件夹下的内容获取不到
如果路径表示一个文件路径,该方法返回null,遍历null会报 java.lang.NullPointerException
import java.io.File;
/*
File类的获取功能:
String getName()
返回的是路径中的最后一级路径(文件或文件夹)
String getPath()
如果File对象中封装的是相对路径,那么getPath结果就是相对路径
如果File对象中封装的是绝对路径,那么getPath结果就是绝对路径
long length()
获取文件的长度,单位是byte
不能获取文件夹的长度
String getParent()
该方法返回父级路径(最后一级路径前面的路径)
如果该路径只有一级路径(没有父级路径),结果为null
File getParentFile()
返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
File getAbsoluteFile()
无论File对象中封装的是什么路径,最终都返回以一个绝对路径
String getAbsolutePath()
无论File对象中封装的是什么路径,最终都返回以一个绝对路径
*/
public class FileDemo06 {
public static void main(String[] args) {
//method01();
//method02();
//method03();
File file = new File("Day22/abc/2.txt");
System.out.println(file.getAbsolutePath());//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\abc\2.txt
File file2 = new File("D:\\java_vev\\workspace\\java-se\\Project_JavaSE\\Day22\\abc\\1.txt");
System.out.println(file2.getAbsolutePath());//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\abc\1.txt
File file3 = new File("Day22/abc/2.txt");
System.out.println(file3.getAbsoluteFile().getName());//2.txt
}
private static void method03() {
File file = new File("Day22/1.txt");
System.out.println(file.getParent());//Day22
File file2 = new File("Day22/abc/2.txt");
System.out.println(file2.getParent());//Day22\abc
File file3 = new File("1.txt");
System.out.println(file3.getParent());//null
File file4 = new File("Day22/abc/2.txt");
File parentFile = file4.getParentFile();
//System.out.println(parentFile);//Day22\abc
System.out.println(parentFile.exists());//true
}
private static void method02() {
File file = new File("Day22/1.txt");
System.out.println(file.length());
File file2 = new File("Day22/abc");
System.out.println(file2.length());//0
}
private static void method01() {
File file = new File("Day22/1.txt");
System.out.println(file.getName());//1.txt
File file2 = new File("Day22/ac");
System.out.println(file2.getName());//ac
File file3 = new File("Day22/1.txt");
System.out.println(file3.getPath());//Day22\1.txt
File file4 = new File("D:\\java_vev\\workspace\\java-se\\Project_JavaSE\\Day22\\1.txt");
System.out.println(file4.getPath());//
}
}