Java学习 IO流 作业00

1.使用文件名称过滤器筛选将指定文件夹下的小于200K的小文件获取并打印。
2.从键盘接收一个文件夹路径,统计该文件夹大小。
3.从键盘接收一个文件夹路径,删除该文件夹。
4.从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印
    例如:
    aaa是文件夹,里面有bbb.txt,ccc.txt,ddd.txt这些文件,有eee这样的文件夹,eee中有fff.txt和ggg.txt,打印出层级来
    aaa
        bbb.txt
        ccc.txt
        ddd.txt    
        eee
            fff.txt
            ggg.txt

package homeWork;

import java.io.File;
public class HomeWork01 {
	static long  fileLength = 0;
	public static void main(String[] args) {
		File file = new File("C:\\Users\\ZYX'sDay\\Desktop\\FileDemo");
		function_1(file);
		System.out.println("-----------------------------------");
		function_2(file);
		System.out.println(file.getName()+"文件的大小为: "+fileLength+"字节");
		System.out.println("-----------------------------------");
		function_3(file);
		System.out.println("-----------------------------------");
		function_4(file,0);
	}
	
	//1.使用文件过滤器将指定文件夹下的小于200K 的小文件获取并打印
	public static void function_1(File dir){
		File[] files = dir.listFiles(new MyFileFilter());
		for (File file : files) {
			if(file.isDirectory()){
				function_1(file);
			}else {
				System.out.println(file);
			}
		}
	}
	
	//2.从键盘接收一个文件夹路径,统计该文件夹大小。
	public static void function_2(File dir){
		File[] files = dir.listFiles();
		for (File file : files) {
			if(file.isDirectory()){
				function_2(file);
			}else {
				fileLength += file.length();
			}
		}
	}
	
	//3.从键盘接收一个文件夹路径,删除该文件夹
	public static void function_3(File dir){
		
		File file = new File(dir, "aa.txt");
		if(file.exists()){
			file.delete();
			System.out.println("文件删除成功");
		}else {
			System.out.println("文件不存在");
		}
		
	}
	//4.从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印
	public static void function_4(File dir,int level){
		
		String preString = "	";
		String dirString = "";
		for(int i = 0 ; i < level ; i++){
			preString += "	";
			dirString +="	";
		}
		//文件夹打印
		if(dir.isDirectory()){
			System.out.println(dirString+dir.getName()+"文件夹:");
		}
		//文件打印
		File[] files = dir.listFiles();
		for (File file : files) {
			if(file.isDirectory()){
				function_4(file,level+1);
			}else {
				System.out.println(preString+file.getName());
			}
		}
	}
	

}

5.键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key,
    用个数作为value,放入到map集合中,并用两种方式遍历map集合
    例如:
    doc 的类型的文件有  3 个
    java 的类型的文件有  5 个
    txt 的类型的文件有  7 个

主类:

package homeWork;

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

public class HomeWork02 {
	public static void main(String[] args) {
		File file = new File("C:\\Users\\ZYX'sDay\\Desktop\\FileDemo");
		Map<String, Integer> map = new HashMap<String, Integer>();
		
		getFileTypeCount(file, map);
		
		pointMap(map);
		
	}
	
	public static void pointMap(Map<String, Integer> map){
		Set<Entry<String, Integer>> entries = map.entrySet();
		
		for(Entry<String, Integer> entry : entries){
			System.out.println(entry.getKey()+" 的类型的文件有 "+entry.getValue()+" 个");
		}
	}
	
	public static void getFileTypeCount(File dir,Map<String, Integer> map){
		File[] files = dir.listFiles();
		
		for (File file : files) {
			if(file.isDirectory()){
				getFileTypeCount(file, map);
			}else {
				int index = file.getName().lastIndexOf(".");
				String str = file.getName().substring(index);
				map.put(str, map.get(str) == null ? 1:map.get(str)+1);
			}
		}
	}

}

过滤类:

package homeWork;

import java.io.File;
import java.io.FileFilter;

public class MyFileFilter implements FileFilter {

	@Override
	public boolean accept(File dir) {
		long FileByte = dir.length();
		if(FileByte < 204800){
			return true;
		}else {
			return false;
		}
	}

}

猜你喜欢

转载自blog.csdn.net/endless_fighting/article/details/81780793