File文件
本文最后更新于15 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

File文件

一、File的概述和构造方法

1、路径

image-20250314151711484
  • windows路径:\
  • linux路径: /
  • \: 转义字符, “C:\\Users\\PYW\Desktop\\a.txt”

2、File对象

image-20250314151736925

3、File对象的构造方法

image-20250314151815375

4、示例代码

 package com.pyw.a49file;
 ​
 import java.io.File;
 import java.io.IOException;
 ​
 public class FileDemo {
 ​
     public static void main(String[] args) throws IOException {
         /*
         public File(String pathname)               根据文件路径创建文件对象
         public File(String parent, String child)   根据父路径名字符串和子路径名字符串创建文件对象
         public File(File parent, String child)     根据父路径对应文件对象和子路径名字符串创建文件对象
 ​
         C:\Users\alienware\Desktop
 ​
         windows路径:\
         linux路径:/
 ​
         \:转义字符
     */
         //1.根据字符串表示的路径,变成File对象
         String str = "C:\\Users\\PYW\\Desktop\\a.txt";
         File file1 = new File(str);
         System.out.println(file1);//C:\Users\PYW\Desktop\a.txt
 ​
         //2.父级路径:C:\Users\PYW\Desktop
         //子级路径:a.txt
         String parent = "C:\\Users\\PYW\\Desktop";
         String child = "a.txt";
         File file2 = new File(parent,child);
         System.out.println(file2);
 ​
         //3.把一个File表示的路径和String表示的路径进行拼接
         File file3 = new File("C:\\Users\\PYW\\Desktop");
         File file4 = new File(file3,"a.txt");
         System.out.println(file4);
    }
 }

二、File的常见成员方法

1、判断和获取信息

image-20250314153118738

(1)判断

image-20250314154057520

①成员方法

  • public boolean isDirectory() 判断此路径名表示的File是否为文件夹
  • public boolean isFile() 判断此路径名表示的File是否为文件
  • public boolean exists() 判断此路径名表示的File是否存在

②示例代码

 package com.pyw.a49file;
 ​
 import java.io.File;
 ​
 public class FileDemo2 {
     public static void main(String[] args) {
         /*
         public boolean isDirectory()       判断此路径名表示的File是否为文件夹
         public boolean isFile()             判断此路径名表示的File是否为文件
         public boolean exists()             判断此路径名表示的File是否存在
      */
         //1.对一个文件的路径进行判断
         File f1 = new File("D:\\Software\\java\\Project\\javaSE\\JavaSECodeDemo\\src\\com\\pyw\\a49file\\aaa\\a.txt");
         //是否是文件夹
         System.out.println(f1.isDirectory());//false
         //是否是文件
         System.out.println(f1.isFile());//true
         //路径是否存在
         System.out.println(f1.exists());//true
 ​
         System.out.println("================");
         //2.对一个文件夹的路径进行判断
         File f2 = new File("D:\\Software\\java\\Project\\javaSE\\JavaSECodeDemo\\src\\com\\pyw\\a49file\\aaa");
         //是否是文件夹
         System.out.println(f2.isDirectory());//true
         //是否是文件
         System.out.println(f2.isFile());//false
         //路径是否存在
         System.out.println(f2.exists());//true
 ​
         System.out.println("================");
         //3.对一个不存在的路径进行判断
         File f3 = new File("D:\\aaa\\c.txt");
         System.out.println(f3.isDirectory());//false
         System.out.println(f3.isFile());//false
         System.out.println(f3.exists());//false
    }
 }

(2)获取

image-20250314153819824

成员方法和细节

  • public long length() 返回文件的大小(字节数量)
    • 细节1这个方法只能获取文件的大小,单位是字节
    • 如果单位我们要是KB,MB,GB,可以不断的除以1024
      • len/1024 KB
      • len/1024/1024 MB
      • len/1024/1024/1024 GB
    • 细节2:这个方法无法获取文件夹的大小
    • 如果我们要获取一个文件夹的大小,需要把这个文件夹里面所有的文件大小都累加在一起
  • public String getAbsolutePath() 返回文件的绝对路径
  • public String getPath() 返回定义文件时使用的路径
  • public String getName() 返回文件的名称,带后缀
    • 细节1:
      • a.txt: a 文件名 txt 后缀名、扩展名
    • 细节2:
      • 文件夹:返回的就是文件夹的名字
  • public long lastModified() 返回文件的最后修改时间(时间毫秒值)

②示例代码

 package com.pyw.a49file;
 ​
 import java.io.File;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 ​
 public class FileDemo3 {
     public static void main(String[] args) {
         /*
         public long length()               返回文件的大小(字节数量)
         public String getAbsolutePath()     返回文件的绝对路径
         public String getPath()             返回定义文件时使用的路径
         public String getName()             返回文件的名称,带后缀
         public long lastModified()         返回文件的最后修改时间(时间毫秒值)
      */
         //1.length 返回文件的大小(字节数量)
         //细节1:这个方法只能获取文件的大小,单位是字节
         //如果单位我们要是M,G,可以不断的除以1024 len/1024 kb len/1024/1024 MB len/1024/1024/1024 GB
         //细节2:这个方法无法获取文件夹的大小
         //如果我们要获取一个文件夹的大小,需要把这个文件夹里面所有的文件大小都累加在一起。
         File f1 = new File("D:\\Software\\java\\Project\\javaSE\\JavaSECodeDemo\\src\\com\\pyw\\a49file\\aaa\\a.txt");
         long len = f1.length();
         System.out.println(len);//18
 ​
         File f2 = new File("D:\\Software\\java\\Project\\javaSE\\JavaSECodeDemo\\src\\com\\pyw\\a49file\\aaa");
         long len2 = f2.length();
         System.out.println(len2);//0
 ​
         System.out.println("====================================");
 ​
         //2.getAbsolutePath 返回文件的绝对路径
         File f3 = new File("D:\\aaa\\a.txt");
         String path1 = f3.getAbsolutePath();
         System.out.println(path1);
 ​
         File f4 = new File("JavaSECodeDemo\\src\\com\\pyw\\a49file\\aaa\\a.txt");
         String path2 = f4.getAbsolutePath();
         System.out.println(path2);
 ​
         System.out.println("====================================");
 ​
         //3.getPath 返回定义文件时使用的路径
         File f5 = new File("D:\\aaa\\a.txt");
         String path3 = f5.getPath();
         System.out.println(path3);//D:\aaa\a.txt
 ​
         //3.getPath 返回定义文件时使用的路径
         File f6 = new File("JavaSECodeDemo\\src\\com\\pyw\\a49file\\aaa\\a.txt");
         String path4 = f6.getPath();
         System.out.println(path4);//JavaSECodeDemo\src\com\pyw\a49file\aaa\a.txt
 ​
         System.out.println("====================================");
 ​
 ​
         //4.getName 获取名字
         //细节1:
         //a.txt:
         //     a 文件名
         //     txt 后缀名、扩展名
         //细节2:
         //文件夹:返回的就是文件夹的名字
         File f7 = new File("D:\\aaa\\a.txt");
         String name1 = f7.getName();
         System.out.println(name1);
 ​
 ​
         File f8 = new File("D:\\aaa\\bbb");
         String name2 = f8.getName();
         System.out.println(name2);//bbb
 ​
         System.out.println("====================================");
 ​
         //5.lastModified 返回文件的最后修改时间(时间毫秒值)
         File f9 = new File("D:\\Software\\java\\Project\\javaSE\\JavaSECodeDemo\\src\\com\\pyw\\a49file\\aaa\\a.txt");
         long time = f9.lastModified();
         System.out.println(time / 1000);//1667380952425
 ​
         //如何把时间的毫秒值变成字符串表示的时间呢?
         //课堂练习:
         //yyyy年MM月dd日 HH:mm:ss
         LocalDateTime dlt = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault());
         //格式转换
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 ​
         String format = dlt.format(dtf);
 ​
         System.out.println(format);
    }
 }

2、创建和删除

image-20250314154143433

(1)创建

成员方法和细节

  • public boolean createNewFile() 创建一个新的空的文件
    • 细节1:
      • 如果当前路径表示的文件是不存在的,则创建成功,方法返回true
      • 如果当前路径表示的文件是存在的,则创建失败,方法返回false
    • 细节2:如果父级路径是不存在的,那么方法会有异常IOException
    • 细节3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件
  • public boolean mkdir() 创建单级文件夹
    • 细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败(如果有文件和要创建的文件夹重名也会创建失败),返回false
    • 细节2:mkdir方法只能创建单级文件夹,无法创建多级文件夹。
  • public boolean mkdirs() 创建多级文件夹
    • 细节:既可以创建单级的,又可以创建多级的文件夹
  • public boolean delete() 删除文件、空文件夹

②示例代码

 package com.pyw.a49file;
 ​
 import java.io.File;
 import java.io.IOException;
 ​
 public class FileDemo4 {
     public static void main(String[] args) throws IOException {
       /*
         public boolean createNewFile()     创建一个新的空的文件
         public boolean mkdir()             创建单级文件夹
         public boolean mkdirs()             创建多级文件夹
         public boolean delete()             删除文件、空文件夹
       */
 ​
 ​
         //1.createNewFile 创建一个新的空的文件
         //细节1:如果当前路径表示的文件是不存在的,则创建成功,方法返回true
         //     如果当前路径表示的文件是存在的,则创建失败,方法返回false
         //细节2:如果父级路径是不存在的,那么方法会有异常IOException
         //细节3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件
         File f1 = new File("D:\\Software\\java\\Project\\javaSE\\JavaSECodeDemo\\src\\com\\pyw\\a49file\\aaa\\a.txt");
         boolean b = f1.createNewFile();
         System.out.println(b);//true
 ​
 ​
         //2.mkdir   make Directory,文件夹(目录)
         //细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false
         //细节2:mkdir方法只能创建单级文件夹,无法创建多级文件夹。
       /* File f2 = new File("D:\\aaa\\aaa\\bbb\\ccc");
         boolean b = f2.mkdir();
         System.out.println(b);*/
 ​
         //3.mkdirs   创建多级文件夹
         //细节:既可以创建单级的,又可以创建多级的文件夹
         File f3 = new File("D:\\Software\\java\\Project\\javaSE\\JavaSECodeDemo\\src\\com\\pyw\\a49file\\aaa\\bbbb");
         boolean b3 = f3.mkdirs();
         System.out.println(b3);//true
 ​
    }
 }

(2)删除-delete

image-20250314155629442

成员方法和细节

  • public boolean delete() 删除文件、空文件夹
    • 细节:
      • 如果删除的是文件,则直接删除,不走回收站。
      • 如果删除的是空文件夹,则直接删除,不走回收站
      • 如果删除的是有内容的文件夹,则删除失败

②示例代码

 package com.pyw.a49file;
 ​
 import java.io.File;
 ​
 public class FileDemo5 {
     public static void main(String[] args) {
       /*
         public boolean delete()             删除文件、空文件夹
         细节:
             如果删除的是文件,则直接删除,不走回收站。
             如果删除的是空文件夹,则直接删除,不走回收站
             如果删除的是有内容的文件夹,则删除失败
       */
 ​
 ​
         //1.创建File对象
         File f1 = new File("D:\\aaa\\eee");
         //2.删除
         boolean b = f1.delete();
         System.out.println(b);
 ​
 ​
    }
 }
 ​

3、获取并遍历

image-20250314160548333

(1)listFiles方法

image-20250314160052679

(2)细节

  • 当调用者File表示的路径不存在时,返回null
  • 当调用者File表示的路径是文件时,返回null
  • 当调用者File表示的路径是需要权限才能访问的文件夹时,返回null
  • 当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组
  • 当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
  • 当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件

(3)示例代码

 package com.pyw.a49file;
 ​
 import java.io.File;
 ​
 public class FileDemo6 {
     public static void main(String[] args) {
 ​
         //public File[] listFiles()       获取当前该路径下所有内容
 ​
 ​
         //1.创建File对象
         File f = new File("D:\\Software\\java\\Project\\javaSE\\JavaSECodeDemo\\src\\com\\pyw\\a49file");
         //2.listFiles方法
         //作用:获取aaa文件夹里面的所有内容,把所有的内容放到数组中返回
         File[] files = f.listFiles();
         for (File file : files) {
             //file依次表示aaa文件夹里面的每一个文件或者文件夹
             System.out.println(file);
        }
 ​
    }
 }

(4)其他方法

①方法概述

image-20250314161416464

细节

  • public static File[] listRoots() 列出可用的文件系统根
  • public String[] list() 获取当前该路径下所有内容(仅仅能获取名字)
  • public String[] list(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容
    • image-20250314161618757
    • accept方法的形参,依次表示aaa文件夹里面每一个文件或者文件夹的路径
      • 参数一:父级路径
      • 参数二:子级路径
      • 返回值:如果返回值为true,就表示当前路径保留
        • 如果返回值为false,就表示当前路径舍弃不要
  • (掌握)public File[] listFiles() 获取当前该路径下所有内容
  • public File[] listFiles(FileFilter filter) 利用文件名过滤器获取当前该路径下所有内容
    • image-20250314161831614
    • 参数表示每一个文件或文件夹的File对象
  • public File[] listFiles(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容
    • image-20250314161944888

②示例代码

 package com.pyw.a49file;
 ​
 ​
 import java.io.File;
 import java.io.FilenameFilter;
 import java.util.Arrays;
 ​
 public class FileDemo7 {
     public static void main(String[] args) {
 ​
       /*
         public static File[] listRoots()               列出可用的文件系统根
         public String[] list()                         获取当前该路径下所有内容
         public String[] list(FilenameFilter filter)     利用文件名过滤器获取当前该路径下所有内容
         (掌握)public File[] listFiles()               获取当前该路径下所有内容
         public File[] listFiles(FileFilter filter)     利用文件名过滤器获取当前该路径下所有内容
         public File[] listFiles(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容
       */
 ​
 ​
         //1.listRoots 获取系统中所有的盘符
         File[] arr = File.listRoots();
         System.out.println(Arrays.toString(arr));
 ​
         //2.list()   获取当前该路径下所有内容(仅仅能获取名字)
         File f1 = new File("D:\\software");
         String[] arr2 = f1.list();
         for (String s : arr2) {
             System.out.println(s);
        }
 ​
         //3.list(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容
         //需求:我现在要获取D:\\aaa文件夹里面所有的txt文件
         File f2 = new File("D:\\software");
         //accept方法的形参,依次表示aaa文件夹里面每一个文件或者文件夹的路径
         //参数一:父级路径
         //参数二:子级路径
         //返回值:如果返回值为true,就表示当前路径保留
         //       如果返回值为false,就表示当前路径舍弃不要
         String[] arr3 = f2.list(new FilenameFilter() {
             @Override
             public boolean accept(File dir, String name) {
                 File src = new File(dir,name);
                     return src.isFile() && name.endsWith(".txt");
            }
        });
         System.out.println("========");
         System.out.println(Arrays.toString(arr3));
    }
 }

 package com.pyw.a49file;
 ​
 import java.io.File;
 ​
 public class FileDemo8 {
     public static void main(String[] args) {
       /*
         (掌握)public File[] listFiles()               获取当前该路径下所有内容
         public File[] listFiles(FileFilter filter)     利用文件名过滤器获取当前该路径下所有内容
         public File[] listFiles(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容
       */
 ​
         //1.创建File对象
         File f = new File("D:\\software");
         //2.需求:打印里面所有的txt文件
         File[] arr = f.listFiles();
         for (File file : arr) {
             //file依次表示aaa文件夹里面每一个文件或者文件夹的路径
             if(file.isFile() && file.getName().endsWith(".txt")){
                 System.out.println(file);
            }
        }
    }
 }

package com.pyw.a49file;

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.util.Arrays;

public class FileDemo9 {
public static void main(String[] args) {
/*
public File[] listFiles(FileFilter filter) 利用文件名过滤器获取当前该路径下所有内容
public File[] listFiles(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容
*/

//创建File对象
File f = new File("D:\\software");
//调用listFiles(FileFilter filter)
File[] arr1 = f.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile() && pathname.getName().endsWith(".txt");
}
});

File[] files = f.listFiles(pathname -> pathname.isFile() && pathname.getName().endsWith(".txt"));
System.out.println(Arrays.toString(files));

//调用listFiles(FilenameFilter filter)
File[] arr2 = f.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File src = new File(dir, name);
return src.isFile() && name.endsWith(".txt");
}
});
System.out.println(Arrays.toString(arr2));


}
}

三、综合练习

1、创建文件

image-20250314162053601
package com.pyw.a49file;

import java.io.File;
import java.io.IOException;

public class FileTest1 {
public static void main(String[] args) throws IOException {
/*
在当前模块下的aaa文件中创建一个a.txt
*/
//1.创建a.txt的父级路径
File file = new File("myfile\\aaa");
//2.创建父级路径
//如果aaa是存在的,那么此时创建失败的。
//如果aaa是不存在的,那么此时创建成功的。
file.mkdirs();
//3.拼接父级路径和子级路径
File src = new File(file, "a.txt");
boolean b = src.createNewFile();
if (b) {
System.out.println("创建成功");
} else {
System.out.println("创建失败");
}

}
}

2、查找文件(不考虑子文件夹)

image-20250314162040823
package com.pyw.a49file;

import java.io.File;
import java.util.Arrays;

public class FileTest2 {
public static void main(String[] args) {
/*
定义一个方法找某一个文件夹中,是否有以avi结尾的电影
(暂时不需要考虑子文件夹)
*/
File f1 = new File("src/com/pyw/a49file/aaa");

//使用文件过滤器
File[] list = f1.listFiles(file -> file.getName().endsWith(".avi") && file.isFile());
System.out.println(Arrays.toString(list));

//判断是否有avi文件
File file = new File("D:\\aaa");
boolean b = haveAVI(file);
System.out.println(b);
}

/**
* 作用:用来找某一个文件夹中,是否有以avi结尾的电影
* 形参:要查找的文件夹
* 返回值:查找的结果
* 存在true不存在false
*
* @param file
* @return
*/
public static boolean haveAVI(File file) {// D:\\aaa
//1.进入aaa文件夹,而且要获取里面所有的内容
File[] files = file.listFiles();
//2.遍历数组获取里面的每一个元素
for (File f : files) {
//f:依次表示aaa文件夹里面每一个文件或者文件夹的路径
if (f.isFile() && f.getName().endsWith(".avi")) {
return true;
}
}
//3.如果循环结束之后还没有找到,直接返回false
return false;
}
}

3、查找文件-递归查找

image-20250314163705795
package com.pyw.a49file;

import java.io.File;

/**
* @author xiaopeng
* @version 1.0
*/
public class FileTest3_pro {
public static void main(String[] args) {
/*需求:
找到电脑中所有以avi结尾的电影。(需要考虑子文件夹)

套路:
1,进入文件夹
2,遍历数组
3,判断
4,判断
*/
File src = new File("E:\\");
findAVI(src);
findAVI(); //获取本地所有盘符
}

private static void findAVI() {
//获取本地所有盘符
File[] roots = File.listRoots();
for (File root : roots) {
findAVI(root);
}
}

public static void findAVI(File src) {//"c:\\
//1.进入文件夹src
File[] files = src.listFiles();
if (files == null) { //判断=空文件夹,有些文件没有权限访问,会返回null
System.out.println("空文件夹" + src.getAbsolutePath());
return;
}
//2.遍历数组,依次得到src里面每一个文件或者文件夹
for (File file : files) {
if (file.isFile()) {
//3,判断,如果是文件,就可以执行题目的业务逻辑
String name = file.getName();
if (name.endsWith(".avi")) {
System.out.println(file);
}
} else {
//4,判断,如果是文件夹,就可以递归
//细节:再次调用本方法的时候,参数一定要是src的次一级路径
findAVI(file);
}
}
}
}

4、删除多级文件夹-递归

image-20250314162232342
image-20250314170032733
package com.pyw.a49file;

import java.io.File;

/**
* @author xiaopeng
* @version 1.0
*/
public class FileTest4_pro {
public static void main(String[] args) {
/* 删除一个多级文件夹
如果我们要删除一个有内容的文件夹
1.先删除文件夹里面所有的内容
2.再删除自己*/

File file = new File("D:\\aaa\\src");

deleteDir(file);
}

/**
* 作用:删除src文件夹
* 参数:要删除的文件夹
**/
public static void deleteDir(File src) {
//1.先刚除文件夹里面所有的内容
//进入src
File[] files = src.listFiles();
//遍历
for (File file : files) {
//判断,如果是文件,删除
if (file.isFile()) {
file.delete();
} else {
//判断,如果是文件夹,就递归
deleteDir(file);
}
}
//2.再删除自己
src.delete();
}
}

5、统计一个文件夹的总大小-递归

package com.itheima.a02test;

import java.io.File;

public class Test5 {
public static void main(String[] args) {
/*需求:
统计一个文件夹的总大小
*/

File file = new File("D:\\aaa\\src");

long len = getLen(file);
System.out.println(len);//4919189
}

/*
* 作用:
* 统计一个文件夹的总大小
* 参数:
* 表示要统计的那个文件夹
* 返回值:
* 统计之后的结果
*
* 文件夹的总大小:
* 说白了,文件夹里面所有文件的大小
* */
public static long getLen(File src){
//1.定义变量进行累加
long len = 0;
//2.进入src文件夹
File[] files = src.listFiles();
//3.遍历数组
for (File file : files) {
//4.判断
if(file.isFile()){
//我们就把当前文件的大小累加到len当中
len = len + file.length();
}else{
//判断,如果是文件夹就递归
len = len + getLen(file);
}
}
return len;
}
}

6、统计文件夹中各种文件的个数-递归、Map

image-20250314162242533
package com.pyw.a49file;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import static com.pyw.a49file.test.fileCount;

public class FileTest6 {

public static void main(String[] args) throws IOException {
/*
需求:统计一个文件夹中每种文件的个数并打印。(考虑子文件夹)
打印格式如下:
txt:3个
doc:4个
jpg:6个
*/

File file = new File("D:\\aaa\\src");
HashMap<String, Integer> hm = getCount(file);
System.out.println(hm);
}

/*
* 作用:
* 统计一个文件夹中每种文件的个数
* 参数:
* 要统计的那个文件夹
* 返回值:
* 用来统计map集合
* 键:后缀名 值:次数
*
* a.txt
* a.a.txt
* aaa(不需要统计的)
*
*
* */
public static HashMap<String,Integer> getCount(File src){
//1.定义集合用来统计
HashMap<String,Integer> hm = new HashMap<>();
//2.进入src文件夹
File[] files = src.listFiles();
//3.遍历数组
for (File file : files) {
//4.判断,如果是文件,统计
if(file.isFile()){
//a.txt
String name = file.getName();
String[] arr = name.split("\\.");// \\. 表示转义字符,具体为.
if(arr.length >= 2){
String endName = arr[arr.length - 1];
if(hm.containsKey(endName)){
//存在
int count = hm.get(endName);
count++;
hm.put(endName,count);
}else{
//不存在
hm.put(endName,1);
}
}
}else{
//5.判断,如果是文件夹,递归
//sonMap里面是子文件中每一种文件的个数
HashMap<String, Integer> sonMap = getCount(file);
//hm: txt=1 jpg=2 doc=3
//sonMap: txt=3 jpg=1
//遍历sonMap把里面的值累加到hm当中
Set<Map.Entry<String, Integer>> entries = sonMap.entrySet();
for (Map.Entry<String, Integer> entry : entries) {
String key = entry.getKey();
int value = entry.getValue();
if(hm.containsKey(key)){
//存在
int count = hm.get(key);
count = count + value;
hm.put(key,count);
}else{
//不存在
hm.put(key,value);
}
}
}
}
return hm;
}
}
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇