目录
File类练习一
-
案例需求
在当前模块下的aaa文件夹中创建一个a.txt文件
-
实现步骤
-
创建File对象,指向aaa文件夹
-
判断aaa文件夹是否存在,如果不存在则创建
-
创建File对象,指向aaa文件夹下的a.txt文件
-
创建这个文件
-
-
代码实现
public class Test1 { public static void main(String[] args) throws IOException { //练习一:在当前模块下的aaa文件夹中创建一个a.txt文件 /* File file = new File("filemodule\\aaa\\a.txt"); file.createNewFile();*/ //注意点:文件所在的文件夹必须要存在. //1.创建File对象,指向aaa文件夹 File file = new File("filemodule\\aaa"); //2.判断aaa文件夹是否存在,如果不存在则创建 if(!file.exists()){ //如果文件夹不存在,就创建出来 file.mkdirs(); } //3.创建File对象,指向aaa文件夹下的a.txt文件 File newFile = new File(file,"a.txt"); //4.创建这个文件 newFile.createNewFile(); } }
File类练习二
-
案例需求
删除一个多级文件夹
-
实现步骤
-
定义一个方法,接收一个File对象
-
遍历这个File对象,获取它下边的每个文件和文件夹对象
-
判断当前遍历到的File对象是文件还是文件夹
-
如果是文件,直接删除
-
如果是文件夹,递归调用自己,将当前遍历到的File对象当做参数传递
-
参数传递过来的文件夹File对象已经处理完成,最后直接删除这个空文件夹
-
-
代码实现
public class Test2 { public static void main(String[] args) { //练习二:删除一个多级文件夹 //delete方法 //只能删除文件和空文件夹. //如果现在要删除一个有内容的文件夹? //先删掉这个文件夹里面所有的内容. //最后再删除这个文件夹 File src = new File("C:\\Users\\apple\\Desktop\\src"); deleteDir(src); } //1.定义一个方法,接收一个File对象 private static void deleteDir(File src) { //先删掉这个文件夹里面所有的内容. //递归 方法在方法体中自己调用自己. //注意: 可以解决所有文件夹和递归相结合的题目 //2.遍历这个File对象,获取它下边的每个文件和文件夹对象 File[] files = src.listFiles(); //3.判断当前遍历到的File对象是文件还是文件夹 for (File file : files) { //4.如果是文件,直接删除 if(file.isFile()){ file.delete(); }else{ //5.如果是文件夹,递归调用自己,将当前遍历到的File对象当做参数传递 deleteDir(file);//参数一定要是src文件夹里面的文件夹File对象 } } //6.参数传递过来的文件夹File对象已经处理完成,最后直接删除这个空文件夹 src.delete(); } }
File类练习三
案例需求
统计一个文件夹中每种文件的个数并打印
打印格式如下:
txt:3个
doc:4个
jpg:6个
…
-
实现步骤
-
定义一个方法,参数是HashMap集合用来统计次数和File对象要统计的文件夹
-
遍历File对象,获取它下边的每一个文件和文件夹对象
-
判断当前File对象是文件还是文件夹
-
如果是文件,判断这种类型文件后缀名在HashMap集合中是否出现过
-
没出现过,将这种类型文件的后缀名存入集合中,次数存1
-
出现过,获取这种类型文件的后缀名出现的次数,对其+1,在存回集合中
-
-
如果是文件夹,递归调用自己,HashMap集合就是参数集合,File对象是当前文件夹对象
-
-
代码实现
public class Test3 {
public static void main(String[] args) {
//统计一个文件夹中,每种文件出现的次数.
//统计 --- 定义一个变量用来统计. ---- 弊端:同时只能统计一种文件
//利用map集合进行数据统计,键 --- 文件后缀名 值 ---- 次数
File file = new File("filemodule");
HashMap<String, Integer> hm = new HashMap<>();
getCount(hm, file);
System.out.println(hm);
}
//1.定义一个方法,参数是HashMap集合用来统计次数和File对象要统计的文件夹
private static void getCount(HashMap<String, Integer> hm, File file) {
//2.遍历File对象,获取它下边的每一个文件和文件夹对象
File[] files = file.listFiles();
for (File f : files) {
//3.判断当前File对象是文件还是文件夹
if(f.isFile()){
//如果是文件,判断这种类型文件后缀名在HashMap集合中是否出现过
String fileName = f.getName();
String[] fileNameArr = fileName.split("\\.");
if(fileNameArr.length == 2){
String fileEndName = fileNameArr[1];
if(hm.containsKey(fileEndName)){
//出现过,获取这种类型文件的后缀名出现的次数,对其+1,在存回集合中
Integer count = hm.get(fileEndName);
//这种文件又出现了一次.
count++;
//把已经出现的次数给覆盖掉.
hm.put(fileEndName,count);
}else{
// 没出现过,将这种类型文件的后缀名存入集合中,次数存1
hm.put(fileEndName,1);
}
}
}else{
//如果是文件夹,递归调用自己,HashMap集合就是参数集合,File对象是当前文件夹对象代码实现
getCount(hm,f);
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/120773.html