一、File的介绍:
- File类的一个对象,代表着一个文件或者一个文件目录(即文件夹)
- File类声明在java.io包下
- File类中涉及到关于文件或目录的创建,删除,重命名,修改时间,文件大小等方法,但是并没有涉及到写入或读取文件内容的操作,如果要读取或写入文件内容,必须使用IO流来完成。
二、File的构造方法:
示例:
//不使用Java提供的分隔符,以下是针对windows平台
File file1 = new File("D:\\IO\\a.txt");
System.out.println(file1); //输出:D:\IO\a.txt
//使用Java提供的分隔符
File file2 = new File("D:" + File.separator + "IO" + File.separator + "a.txt");
System.out.println(file2); //输出:D:\IO\a.txt
//File(File parent,String child)
//从父抽象路径和子路径字符串创建新的File实例
File file3 = new File("D:");
File file4 = new File(file3, "IO" + File.separator + "a.txt");
System.out.println(file4); //输出:D:\IO\a.txt
//File(String pathname)
//通过将给定的路径名字符串转化为抽象路径名来创建新的File实例
File file5 = new File("D:" + File.separator + "IO" + File.separator + "a.txt");
System.out.println(file5); //输出:D:\IO\a.txt
//File(String parent,String child)
//通过父类路径名字符串和子路径名字符串来创建新的File实例
File file6 = new File("D:", "IO\\a.txt");
System.out.println(file6); //输出:D:\IO\a.txt
三、File的相关方法和属性
属性:
常用方法:
File的获取功能:
//先创建一个File对象
File file = new File("D:" + File.separator + "IO" + File.separator + "a.txt");
//获取绝对路径
String absolutePath = file.getAbsolutePath();
System.out.println(absolutePath); //D:\IO\a.txt
//获取相对路径
String path = file.getPath();
System.out.println(path); //D:\IO\a.txt
//获取名称
String name = file.getName();
System.out.println(name); //a.txt
//获取上一层目录路径
String parent = file.getParent();
System.out.println(parent); //D:\IO
//获取文件长度(字节数)
long length = file.length();
System.out.println(length);
//获取最后一次的修改时间(毫秒值)
long lastTime = file.lastModified();
System.out.println(lastTime);
File的判断功能:
//判断是否是目录
boolean isDirectory = file.isDirectory();
System.out.println(isDirectory);
//判断是否是文件
boolean isFile = file.isFile();
System.out.println(isFile);
//判断是否存在
boolean isExists = file.exists();
System.out.println(isExists);
//判断是否可读
boolean isRead = file.canRead();
System.out.println(isRead);
//判断是否可写
boolean isWrite = file.canWrite();
System.out.println(isWrite);
//判断是否隐藏
boolean isHidden = file.isHidden();
System.out.println(isHidden);
File的创建功能:
File file = new File("D:\\a.txt");
//创建文件,如果文件已经存在,则不创建,并返回false
boolean createNewFile = file.createNewFile();
System.out.println(createNewFile);
//创建文件目录,如果文件目录已经存在,则不创建。如果此文件的上层目录不存在,也不创建
boolean mkdir = file.mkdir();
System.out.println(mkdir);
//创建文件目录,如果上层目录不存在,一并创建
boolean mkdirs = file.mkdirs();
System.out.println(mkdirs);
File的删除功能:
//Java的删除不走回收站
//要删除一个文件目录,需要保证这个目录中不包含文件或者其他目录
boolean delete = file.delete();
System.out.println(delete);
目录相关:
//以下两个方法适用于目录
//获取指定目录下的所有文件和文件目录的名称数组
public String[] list();
//获取指定目录下的所有文件和文件目录的File数组
public File[] listFiles();
剩下的方法没有什么好说的,详情请见 java8文档:File类接口,需要用到的时候再进行查询文档即可。
四、File小技巧
打印给定目录下的所有文件夹和文件夹里面的内容:
public void getFileList(File file){
//第一级子目录
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f);
if(f.isDirectory()){
getFileList(f);
}
}
}
@Test
public void test(){
File file = new File("D:\\data");
getFileList(file);
}