File的学习2

发布于:2024-03-22 ⋅ 阅读:(93) ⋅ 点赞:(0)

综合练习

需求:在当前模块下的aaa文件夹中创建一个a.txt文件

package MyFile;

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

public class Test1 {
    public static void main(String[] args) throws IOException {
       File file=new File("MyFile\\aaa");
       file.mkdirs();
       File src=new File(file,"a.txt");
        boolean b = src.createNewFile();
        if(b){
            System.out.println("创建成功");
        }else {
            System.out.println("创建失败");
        }
    }
}

需求:定义一个方法找某一个文件夹中,是否有以avi结尾的电影。(暂时不需要考虑子文件夹)

package MyFile;

import java.io.File;

public class Test2 {
    public static void main(String[] args) {
File file=new File("D:\\aaa\\bbb");
        boolean b = haveAVI(file);
        System.out.println(b);
    }
    public static boolean haveAVI(File file){
        File[] files = file.listFiles();
        for (File f : files) {
            if(f.isFile()&&f.getName().endsWith(".avi")){
              return true;
            }
        }
        return  false;
    }
}

需求:定义一个方法找某一个文件夹中,是否有以avi结尾的电影。(需要考虑子文件夹)

package MyFile;

import java.io.File;

public class Test3 {
    public static void main(String[] args) {
       findAVI();
    }
    public static void findAVI(){
        File[] arr = File.listRoots();
        for (File f : arr) {
            findAVI(f);
        }

    }
    public static void findAVI(File src){
        File[] files = src.listFiles();
        if(files!=null){
            for (File file : files) {
                if(file.isFile()){
                    String name = file.getName();
                    if(name.endsWith(".avi")){
                        System.out.println(file);
                    }else {
                        findAVI(file);
                    }
                }
            }
        }
    }
}

需求:删除一个多级文件夹

package MyFile;

import java.io.File;

public class Test4 {
    public static void main(String[] args) {
        File file=new File("D:\\aaa\\src");
    delete(file);
    }
    public static void delete(File src){
        File[] files = src.listFiles();
        for (File file : files) {
            if(file.isFile()){
                file.delete();
            }else{
                delete(file);
            }
        }
        src.delete();
    }
}

需求:统计一个文件夹中每种文件的大小

package MyFile;

import java.io.File;

public class Test5 {
    public static void main(String[] args) {
File f=new File("D:\\aaa\\src");
        System.out.println(getLen(f));
    }
    public static long getLen(File src){
        long len=0;
        File[] files = src.listFiles();
        for (File file : files) {
          if(file.isFile())  {
              len=len+file.length();
          }else {
              len=len+getLen(file);
          }
        }
return  len;
    }
}

需求:统计一个文件夹中每种文件的个数并打印(考虑子文件夹)

package MyFile;

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

public class Test6 {
    public static void main(String[] args) {
File f=new File("D:\\aaa\\src");
        System.out.println(getCount(f));
    }
    public static HashMap<String, Integer> getCount(File src){
        HashMap<String,Integer> hm=new HashMap<>();
        File[] files = src.listFiles();
        for (File file : files) {
            if(file.isFile()){
                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 {
             HashMap<String,Integer> sonMap=getCount(file);
                Set<Map.Entry<String, Integer>> entries = sonMap.entrySet();
                for (Map.Entry<String, Integer> entry : entries) {
                    String key = entry.getKey();
                    Integer value = entry.getValue();
                    if(hm.containsKey(key)){
                   int count= hm.get(key);
                        hm.put(key,value);
                   count=count+value;
                    }else {
                        hm.put(key,value);
                    }
                }
            }
        }
        return hm;
    }
}


网站公告

今日签到

点亮在社区的每一天
去签到