文章目录
- 前言
- 一、File的常见构造方法
- 二、File中常见的成员方法
- 三、综合练习
- 1.创建文件
- 2.单个文件夹中查找文件
- 3.找到电脑中所有以.txt结尾的文件。(需要考虑子文件夹)
- 4. 删除一个多级文件夹
- 5.统计一个文件夹中每种文件的个数并打印(考虑子文件夹)
前言
File是Java中用于表示文件和文件夹路径的类。它既可以表示一个文件的路径,也可以表示一个文件夹的路径。通过File对象,我们可以对文件或文件夹进行创建、删除、获取信息等操作。
java.io.File 是 Java 中用于表示文件或目录路径名的类。它位于 java.io 包下,实现了 Serializable 和 Comparable 接口。
一、File的常见构造方法
| 方法名称 | 说明 |
|---|---|
public File(String pathname) | 根据文件路径创建文件对象 |
public File(String parent,String child) | 根据父路径名和子路径名创建文件对象 |
public File(File parent,String child) | 根据父路径对应文件对象和子路径名创建文件对象 |
// 1.根据字符串表示的路径创建文件对象Stringpathname="D:\\WORK\\Study\\a.txt";Filefile=newFile(pathname);System.out.println(file);//D:\WORK\Study\a.txt// 2.父级路径D:\WORK\Study 子路径:a.txtStringparent="D:\\WORK\\Study";Stringchild="a.txt";Filefile1=newFile(parent,child);System.out.println(file1);//D:\WORK\Study\a.txt// 3.把File表示的路径和字符串表示的路径拼接Filefile2=newFile("D:\\WORK\\Study");Stringchild2="a.txt";Filefile3=newFile(file2,child2);System.out.println(file3);//D:\WORK\Study\a.txt二、File中常见的成员方法
| 方法名称 | 说明 |
|---|---|
public boolean isDirectory() | 判断此路径名表示的File是否为文件夹 |
public boolean isFile() | 判断此路径名表示的File是否为文件 |
public boolean exists() | 判断此路径名表示的File是否存在 |
public long length() | 返回文件的大小(字节数量) |
public String getAbsolutePath() | 返回文件的绝对路径 |
public String getPath() | 返回定义文件时使用的路径 |
public String getName() | 返回文件的名称,带后缀 |
public long lastModified() | 返回文件最后修改的时间(时间毫秒值) |
public boolean createNewFile() | 创建一个新的空的文件 |
public boolean mkdir() | 创建单级文件夹 |
public boolean mkdirs() | 创建多级文件夹 |
public boolean delete() | 删除文件,空文件夹 |
public File[] listFiles() | 获取当前路径下所有内容 |
public static File[] listRoots() | 列出可用的文件系统根(获取系统中所有的盘符) |
public String[] list() | 获取当前路径下的所有内容(仅获取名字) |
public String[] list(FilenameFilter filter) | 利用文件名过滤器获取当前该路径下的所有内容 |
public String[] listFiles() | 获取当前路径下的所有内容 |
public String[] listFiles(FileFilter filter) | 利用文件名过滤器获取当前该路径下的所有内容 |
public String[] listFiles(FilenameFilter filter) | 利用文件名过滤器获取当前该路径下的所有内容 |
三、综合练习
1.创建文件
Filefile=newFile("D:\\WORK\\Study\\aaa");if(!file.exists()){file.mkdirs();//如果文件不存在,创建多级文件夹}Filefile1=newFile(file,"aaa.txt");booleanb=file1.createNewFile();//创建一个新的空的文件if(b){System.out.println("创建成功");}else{System.out.println("创建失败");}2.单个文件夹中查找文件
定义一个方法找某一个文件夹中,是否有以.txt结尾的文件
publicstaticvoidmain(String[]args){Filefile=newFile("D:\\WORK\\Study\\aaa");booleanb=haveTxt(file);System.out.println(b);}publicstaticbooleanhaveTxt(Filefile){File[]fos=file.listFiles();//获取当前路径下的所有内容for(Filefo:fos){if(fo.getName().endsWith(".txt")){returntrue;}}returnfalse;}3.找到电脑中所有以.txt结尾的文件。(需要考虑子文件夹)
publicstaticvoidmain(String[]args){haveTxt();}publicstaticvoidhaveTxt(){File[]file=File.listRoots();for(Filef:file){haveTxt(f);}}publicstaticvoidhaveTxt(Filefile){File[]fos=file.listFiles();//获取当前路径下的所有内容if(fos!=null){for(Filefo:fos){if(fo.isFile()){if(fo.getName().endsWith(".txt")){System.out.println(fo.getName());}}else{haveTxt(fo);}}}}4. 删除一个多级文件夹
publicstaticvoidmain(String[]args){Filefile=newFile("D:\\WORK\\Study\\aaa");delete(file);}//删除aaa的文件夹publicstaticvoiddelete(Filefile){File[]fos=file.listFiles();//获取当前路径下的所有内容if(fos!=null){for(Filefo:fos){if(fo.isFile()){fo.delete();}else{delete(fo);}}}file.delete();}5.统计一个文件夹中每种文件的个数并打印(考虑子文件夹)
publicstaticvoidmain(String[]args){Filefile=newFile("D:\\WORK");HashMap<String,Integer>fileCount=getFileCount(file);System.out.println(fileCount);}publicstaticHashMap<String,Integer>getFileCount(Filefile){HashMap<String,Integer>map=newHashMap<String,Integer>();File[]files=file.listFiles();if(files!=null){for(Filef:files){if(f.isFile()){Stringname=f.getName();String[]split=name.split("\\.");if(split.length>=2){StringendName=split[split.length-1];if(map.containsKey(endName)){intcount=map.get(endName);count++;map.put(endName,count);}else{map.put(endName,1);}}}else{HashMap<String,Integer>sonMap=getFileCount(f);Set<Map.Entry<String,Integer>>entries=sonMap.entrySet();for(Map.Entry<String,Integer>entry:entries){Stringkey=entry.getKey();intvalue=entry.getValue();if(map.containsKey(key)){intcount=map.get(key);count+=value;map.put(key,count);}else{map.put(key,value);}}}}}returnmap;}