java-API之File文件流

创建File对象

File(String pathname)  //通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

常用方法及其测试

                File file = new File("F:\\ioTest\\1.txt");  // 本地磁盘路径
		
		// 常见方法
		System.out.println( file.length() );  // 获取文件的字节量
		System.out.println( file.exists() );  // 判断文件是否存在
		System.out.println( file.isFile() );  // 判断资源是否存在
		System.out.println( file.isDirectory() );  // 判断资源是否是文件夹
		System.out.println( file.getName() );  // 获取文件名
		System.out.println( file.getParent() ); // 获取父目录
		System.out.println( file.getAbsolutePath() );  // 获取 当前文件的绝对路径(全路径)
		
		System.out.println();
		
		file = new File("F:\\ioTest\\2.txt");
                // 没有了创建返回true,有了不创建返回false
		System.out.println( file.createNewFile() ); // 判断有没有新建成功
		file = new File("F:\\ioTest\\x\\y\\z");
		System.out.println( file.mkdirs() );  // 创建不存在的多级目录
		
		file = new File("F:\\ioTest\\xy");
		System.out.println( file.mkdir() ); // 创建一级不存在的目录
		System.out.println( file.delete() ); // 删除文件 或者 空白的文件夹
//		
		file = new File("F:\\ioTest\\a");
		String[] str2 = file.list() ;  // 列出文件夹下面所有的资源
//		[1.png, 1.txt, 2.txt],数组里放的是文件名称
		System.out.println(Arrays.toString(str2));
		
//		File[] listFiles() 
//              返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
		File[] files = file.listFiles();
		System.out.println(Arrays.toString(files));
//		System.out.println( file.listFiles() );
		

常用方法应用

递归求目录总大小

所谓递归,就是自己调用自己的一种方式。

    import java.io.File;
    import java.util.Scanner;

    // 该类 测试 递归求目录总大小
    public class Test3_Size {

	public static void main(String[] args) {
		// 1.接收用户输入的目录
		String path = new Scanner(System.in).nextLine();
		File dir = new File(path);
		
//		2.调用size()总大小
		long sum = size(dir);
		System.out.println("文件总大小:"+sum); // 370257 单位:字节
	}
	private static long size(File dir) {
		long sum = 0;
		// 1.列出所有文件夹下面的所有资源
		File[] fs = dir.listFiles();
		
//		1.1 我们需要获取每个File对象,就需要遍历fs数组
		for (int i = 0; i < fs.length; i++) {
//			2.如果是文件,把文件的字节量累加 length()
			File file = fs[i];
			if(file.isFile()) {
				sum += file.length();
			}else if(file.isDirectory())  { //3.如果是文件夹,则继续遍历文件夹里的文件,进行判断,即继续递归
				sum += size(file);
			}
		}
//		返回文件总大小
		return sum;
	}
}

经过上述的是,我的指定路径的字节总数是:370257B,可以通过该文件夹右键 -> 属性,查看到的字节数和程序运行结果一致。

递归删除文件夹

代码演示:


import java.io.File;
import java.util.Scanner;
public class Test4_Delete {
	public static void main(String[] args) {
		// 接收用户输入的路径
		String path = new Scanner(System.in).nextLine();
		// 创建File对象
		File dir = new File(path);
		
		delete(dir);
		System.out.println("删除成功!!!");
	}
        /*
	 * dir可以是文件路径,也可以是文件夹路径
	 */
	 private static void delete2(File dir) {
		// TODO Auto-generated method stub
		if(!dir.exists()) { //如果路径不存在,直接返回
			return;
		}
//		1.判断是否是文件,是的话直接删除
		if(dir.isFile()) {
			dir.delete(); // 删除文件
		} else if(dir.isDirectory()) {  // 2.判断是否是目录
			for(File f : dir.listFiles()) { // 2.1 遍历目录下的所有的资源(文件和文件夹)
				delete(f); // 进入目录,重新检查,递归调用
			}
			delete(dir); // 删除外层文件夹
		}
	}
}

posted @ 2020-03-06 09:45  技术狂-CYL  阅读(1822)  评论(0编辑  收藏  举报