File练习

File

1统计文件夹大小:

    package com.heima.test;
    
    public class Test1 {
    	
    	public static void main(String[] args) {
    		File dir = new File("F:\\day06");
    		Ststem.out.println(dir.length());   //直接获取文件夹是0
    		//File dir = getDir();
    		//System.out.println(getFileLength(dir));
    	}
    }
    	public static File getDir() {
    		//1,创建键盘录入对象
    		Scanner sc = new Scanner(System.in);
    		System.out.println{"请输入一个文件夹路径:");
    		//2.定义一个无限循环
    		while(true) {
    			String line = sc.nextLine();
    			File dir = new File(line);
    			//4.对Flie对象判断
    			if(!dir.exists()) {
    				System.out.println("你录入的文件夹路径不存在,请输入一个文件夹路径":);
    			}else if(dir.isFile()) {
    				System.out.println("你录入的是文件路径,请输入一个文件夹路径":);
    			}else {
    				//5,将文件夹路径对象返回
    				return dir;
    		}
    	}
    }
    	public static long getFileLength(File dir) {
    		//1定义一个求和变量
    		long len = 0;
    		//2获取该文件夹下所有的文件和文件夹listFiles();
    		File[] sudFiles = dir.listFiles();
    		//3遍历数组
    		for (File subFile : subFiles) {
    			//4判断是文件就计算大小并累加
    			if(subFile.isFile()) {
    				len = len + subFile.length();
    				//5判断是文件夹。递归调用
    			}else {
    				len = len + getFileLength(subFile);
    			}
    		}
    		return len;
    	}

2删除文件夹:

    package com.heima.test;
    
    public class Test1 {
    	
    	public static void main(String[] args) {
    		File dir = Test1.getDir();  //获取文件夹路径
    		deleteFile(dir);
    	}
    	
    	public static void deleteFile(File dir) {
    		//1获取该文件夹下的所有的文件和文件夹
    		File[] subFiles = dir.listFiles();
    		//2遍历数组
    		for (File subFile : subFiles) {
    			//判断是文件直接删除
    			if(subFile,isFile()) {
    				subFile.delete();
    				//如果是文件夹递归调用
    			}else {
    				deleteFlie(subFile);
    			}
    		}
    		//5循环结束后把空文件夹删掉
    		dir.delete();
    	}
    				
    }

3拷贝

    package com.heima.test;
    
    public class Test3 {
    	
    	public static void main(String[] args) {
    		File src = Test1.getDir();
    		File dest = Test1.getDie();
    		if(src.equals(dest)) {
    			System.out.println("目标文件夹是原文件夹的子文件夹");
    		}else {
    			copy(src,dest);
    		}
    	}
    	/*
    	*把其中一个文件夹中拷贝到另一个文件夹中
    	*1返回类型void
    	*2参数列表File src ,File dest
    	*/
    	public static void copy(File src, File dest) {
    		//1在目标文件夹中创建原文件夹
    		File newDir = new File(dest, src,getName());
    		newDir,mkdir();
    		//获取原文件夹在所有的文件和文件夹,存储在File数组中
    		File[] sudFile = src.listFiles()
    		//遍历数组
    		for (File subFile : subFile) {
    			//如果是文件就用io流读写
    			if(subFile.isFile()) {
    				BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
    				BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(newDir,subFile.getName())));
    				
    				int b;
    				while((b = bis.read()) != -1) {
    					bos.write(b);
    				}
    				
    				bis.close();
    				bos.close();
    				//如果是文件夹就用递归调用
    			}else {
    				copy(subFile,newDir);
    			}
    		}
    	}
    	
    }

4打印

    package com.heima.test;
    
    public class Test4 {
    	
    	
    	public static void main(String[] args) {
    		File dir = Test1.getDir();
    		printLev(dir,0);
    	}
    	
    	public static void printLev(File dir,int lev) {
    		
    		File[] subFile : subFiles();
    		
    		for (File subFile : subFiles) {
    			for(int i = 0; i <= lev; i++) {
    				System.out.println("\t")
    			}
    			System.out.println(subFile);
    			
    			if(subFile.isDirectory()) {
    				printLev(subFile,lev + 1);
    			}
    		}
    	}

    public class Test5 {
    	public static void main(String[] args) {
    		int[] arr = new int[8];
    		
    		arr[0] = 1;
    		arr[1] = 1;
    		
    		for(int i = 2; i < arr.length; i++) {
    			arr[i] = arr[i - 2] + arr[i - 1];
    		}
    		System.out.println(arr[arr.length - 1]);
    	}
    	
    	
    	public static int fun(int num) {
    		if(num == 1 || nwm == 2) {
    			return 1;
    		}else {
    			return fun(nwm - 2) + fun(num - 1);
    		}
    	}
    	
    }

猜你喜欢

转载自blog.csdn.net/A2307812087/article/details/83512512