> 文章列表 > Java基础之File

Java基础之File

Java基础之File

文章目录

    • 一、File的声明
    • 二、File的创建
      • 2.1 创建一个文件
      • 2.2 创建一个文件夹
      • 2.3 创建一个多级文件夹
    • 三、File的删除
    • 四、File的获取与判断
      • 4.1 获取一个文件夹孩子层所有文件和文件夹,并存入数组
      • 4.2 判断一个File对象是否为文件
      • 4.3 判断一个File对象是否为文件夹
      • 4.4 判断一个File对象是否存在
      • 4.5 获取当前File对象的全名(包括后缀名)
    • 五、File案列练习(根据文件类型分类)

一、File的声明

声明的File不需要是存在的,我们声明的路径可以是存在的,也可以是不存在的。因为我们只是声明,并不一定会用。

方法名 说明
File(String pathname) 通过给定的字符串路径指明一个File文件(或者文件夹)
File(String parent,String child) 通过两个字符串拼接形成最终字符串路径,指明一个File文件(或者文件夹)
File(File parent,String child) 实际上也是通过两个字符串拼接形成最终字符串路径,指明一个File文件(或者文件夹)
public static void main(String[] args) {//通过给定的字符串路径指明一个File文件(或者文件夹)File file=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\aa.txt");//通过两个字符串拼接形成最终字符串路径,指明一个File文件(或者文件夹)File file1=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo","aa.txt");String path1="D:\\\\Code\\\\ideaCode\\\\FileTestDemo";String path2="aa.txt";File file2=new File(path1,path2);String path3="D:\\\\Code\\\\ideaCode\\\\FileTestDemo";File file3=new File(path3,"aa.txt");String path4="aa.txt";File file4=new File("aa.txt",path4);//实际上也是通过两个字符串拼接形成最终字符串路径,指明一个File文件(或者文件夹)File file5=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo");String path5="aa.txt";File file6=new File(file3,path5);}

二、File的创建

方法名 说明
boolean createNewFile() 创建一个文件
boolean mkdir() 创建一个文件夹
boolean mkdirs 创建一个多级文件夹

2.1 创建一个文件

我们在这里创建一个aa.txt文本文件,初始无aa.txt文件存在

Java基础之File


public static void main(String[] args) throws IOException {//声明一个文件File file=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\aa.txt");//创建文件(若文件已存在,则返回false,否则返回true)boolean newFile = file.createNewFile();System.out.println(newFile);}

运行结果:
Java基础之File


2.2 创建一个文件夹

我们在这里创建一个名为bb的单级文件夹,初始无bb单级文件夹存在

Java基础之File


public static void main(String[] args) throws IOException {//声明一个单级文件夹File file1=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\bb");//创建单级文件夹(若文件夹已存在,则返回false,否则返回true)boolean mkdir = file1.mkdir();System.out.println(mkdir);}

运行结果:

Java基础之File


2.3 创建一个多级文件夹

我们在这里创建一个名为cc的多级文件夹,初始无cc多级文件夹存在

Java基础之File


public static void main(String[] args) throws IOException {//声明一个多级文件夹File file2=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\cc\\\\aa\\\\bb\\\\dd\\\\ee");//创建多级文件夹boolean mkdirs = file2.mkdirs();System.out.println(mkdirs);}

运行结果:

Java基础之File


三、File的删除

调用delete()方法仅能删除文件和空文件夹,若一个文件夹中含有文件或者文件夹,则需要将文件夹中的文件和文件夹清空,使之成为空文件夹才能将之删除。

方法名 说明
boolean delete() 删除一个文件或者空文件夹

删除我们刚刚创建的bb空文件夹

Java基础之File


public static void main(String[] args) throws IOException {//声明bb文件夹File file=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\bb");//调用delete()方法删除bb空文件夹boolean delete = file.delete();System.out.println(delete);}

运行结果:
Java基础之File


删除我们刚刚创建的aa.txt文件

Java基础之File


public static void main(String[] args) throws IOException {//声明aa.txt文件File file=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\aa.txt");//调用delete()方法删除aa.txt文件boolean delete = file.delete();System.out.println(delete);}

运行结果:
Java基础之File


删除我们刚刚创建的cc多级文件夹(直接调用delete()方法无法删除cc多级文件夹,因为cc多级文件夹并不是空文件夹)

Java基础之File


public static void main(String[] args) throws IOException {//声明cc多级文件夹File file=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\cc");//调用delete()方法无法直接删除cc多级文件夹boolean delete = file.delete();System.out.println(delete);}

运行结果:
Java基础之File


四、File的获取与判断

方法名 说明
File[] listFiles() 获取一个文件夹孩子层所有文件和文件夹,并存入数组
boolean isFile() 判断一个File对象是否为文件
boolean isDirectory() 判断一个File对象是否为文件夹
boolean exists() 判断一个File对象是否存在
String getName() 获取当前File对象的全名(包括后缀名)

4.1 获取一个文件夹孩子层所有文件和文件夹,并存入数组

我们来遍历一个aa非空文件夹,aa非空文件夹孩子层所有文件及文件夹如下图所示:

Java基础之File


public static void main(String[] args) throws IOException {//声明aa非空文件夹File file=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\aa");//调用listFiles()方法获取aa文件夹孩子层所有文件和文件夹File[] files = file.listFiles();//使用forEach()语句遍历File数组for (File file1 : files) {System.out.println(file1);}}

运行结果:
Java基础之File


4.2 判断一个File对象是否为文件

我们先来判断aa.txt它是不是一个文件

Java基础之File


public static void main(String[] args) throws IOException {//声明aa.txt文件File file=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\aa.txt");//调用isFile()方法判断对象是否为文件boolean file1 = file.isFile();System.out.println(file1);}

运行结果:
Java基础之File


我们再来判断bb.txt它是不是一个文件(无意外,它不是一个文件)

Java基础之File


public static void main(String[] args) throws IOException {//声明bb.txt文件File file=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\bb.txt");//调用isFile()方法判断对象是否为文件boolean file1 = file.isFile();System.out.println(file1);}

运行结果:
Java基础之File


4.3 判断一个File对象是否为文件夹

我们来判断bb.txt它是不是一个文件夹。

Java基础之File


public static void main(String[] args) throws IOException {//声明bb.txt文件File file=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\bb.txt");//调用isDirectory()方法判断对象是否为文件夹boolean directory = file.isDirectory();System.out.println(directory);}

运行结果:
Java基础之File


4.4 判断一个File对象是否存在

exists()方法可以判断一个File对象是否存在(不论是文件还是文件夹均可判断),我们声明一个虚假的cc.txt文件,来判断它是否存在。结果为不存在。

Java基础之File


public static void main(String[] args) throws IOException {//声明cc.txt文件File file=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\cc.txt");//调用exists()方法判断File对象是否存在boolean exists = file.exists();System.out.println(exists);}

运行结果:
Java基础之File


4.5 获取当前File对象的全名(包括后缀名)

public static void main(String[] args) throws IOException {//声明cc.txt文件File file=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\cc.txt");//调用getName()方法获取当前File对象的全名(包括后缀名)String name = file.getName();System.out.println(name);}

运行结果:
Java基础之File


五、File案列练习(根据文件类型分类)

获取一个非空文件夹孩子层所有文件及文件夹,并按照后缀名来对它们进行划分,并统计各个类型文件数量(因此我们无需查看文件夹,只需查看孩子层文件即可)

Java基础之File


public static void main(String[] args) throws IOException {//声明aa非空文件夹File file=new File("D:\\\\Code\\\\ideaCode\\\\FileTestDemo\\\\aa");//创建Key值类型为String,Value值类型为Integer的Map集合,其中Key表示文件类型,Value表示此文件类型的数量Map<String,Integer> map=new HashMap<>();//调用listFiles()方法读取aa非空文件夹孩子层所有文件及文件夹File[] files = file.listFiles();//遍历File数组for (File file1 : files) {//若此对象为文件,对它文件类型进行划分if(file1.isFile()){//获取此文件全名(包括后缀名)String nameAll=file1.getName();//将文件名按"."进行分割,存入String数组中String[] nameArr=nameAll.split("\\\\.");//获取文件后缀名(文件的后缀名一定为最末尾元素)String nameLast=nameArr[nameArr.length-1];//如果集合中存在此文件类型if(map.containsKey(nameLast)){//通过文件类型获取此文件类型的数量int count=map.get(nameLast);//数量加1count++;//更新文件类型的数量map.put(nameLast,count);}else{//若集合中不存在此文件类型,则将此文件类型存入集合中,数量为1map.put(nameLast,1);}}}//普通方法输出集合System.out.println(map);}

运行结果:
Java基础之File