常用类之Math,Random以及File

一·Math类

概述

它是java.lang包提供的一个工具类,它提供的是一些数学运算相关方法,它没有提供公开的构造方法,所以它的内部都是一些static修饰的资源,包含了基本的数字运算方法,比如:基本指数,平方根,三角函数等数学运算。

常用方法

        //圆周率
        System.out.println(Math.PI);
        //获得绝对值
        System.out.println(Math.abs(-67));
        //向下取整
        System.out.println(Math.floor(5.98));
        //向上取整
        System.out.println(Math.ceil(5.01));
        //四舍五入
        System.out.println(Math.round(4.47));
        //获得最大值
        System.out.println(Math.max(56,98));
        //获得最小值
        System.out.println(Math.min(45,76));
        //获得第二个参数的幂
        System.out.println(Math.pow(5,3));
        //开方
        System.out.println(Math.sqrt(25));
        //获得0-1之间的随机浮点数
        System.out.println(Math.random());

二·Random

概述

使用Math.random获得的随机数是0-1之间的随机浮点数,如果需要特定值还需要再次计算才能得到,不够方便,所有在jdk中提供了一个专门获得随机数的类:java.util.Random类,可以随机取得整数值、浮点值、布尔值。

构造方法

Random() 创建一个新的随机数生成器。

Random(long seed) 使用单个 long种子创建一个新的随机数生成器。

常用方法

 		//创建一个新的随机数生成器。
        Random r = new Random();
        //随机获得整型范围内的随机数
        System.out.println(r.nextInt());
        //获得0-指定数值的随机数
        System.out.println(r.nextInt(20));
        //获得0-1之间的随机浮点数
        System.out.println(r.nextDouble());
        //获得随机布尔值
        System.out.println(r.nextBoolean());

三·File类

概述

用于表示系统文件或目录,java.id提供了file类,用file类可以对文件或者目录操作,使用file提供的方法可以对文件进行:创建,删除,扫描等操作

构造方法

File(String pathname)

通过给定的路径名字符串转换为抽象路径名来创建新的File实例

常用方法

 File file = new File("D:/IDE");
        File file1 = new File("D:/IDE","记事本.txt");
        File file2 = new File(new File("D:/IDE"),"记事本.txt");
        System.out.println(file);
        //创建由当前file对象表示的新文件
        file.createNewFile();
        //创建由当前file对象表示的目录(一级目录)
        file.mkdir();
        //创建由当前file对象表示的目录(多级子目录)
        file.mkdirs();
        //删除由当前file对象所表示的文件或目录(删除的目录必须是空目录)
        file.delete();
        //判断当前file对象所表示的文件是否存在
        System.out.println(file.exists());
        //获取当前对象的绝对路径
        System.out.println(file.getAbsoluteFile());
        //获取当前文件名
        System.out.println(file.getName());
        //获取当前file所表示的父文件对象
        System.out.println(file.getParentFile());
        //判断当前file对象是否为目录
        System.out.println(file.isDirectory());
        //判断当前file对象是否为文件
        System.out.println(file.isFile());
        //获得当前文件对象的大小(如果是目录则为0)
        System.out.println(file.length());
        //获得当前对象最后修改时间
        System.out.println(file.lastModified());
        //获得file对象中所有的文件和子目录名称
        System.out.println(Arrays.toString(file.list()));
        //获得file对象中的所有文件和子目录的file对象
        System.out.println(Arrays.toString(file.listFiles()));
        //重命名文件或目录名称
        System.out.println(file.renameTo(new File("D/IDEA")));
        //返回当前系统所有的盘符数组
        System.out.println(Arrays.toString(File.listRoots()));

        //获取与系统有关的路径分割符    windows: ;    linux:  :
        System.out.println(File.pathSeparatorChar);
        //获取与系统有关的名称分割符  windows: \    linux:  /
        System.out.println(File.separatorChar);

文件过滤

//获取目录中指定文件
    public void readMp3(String path){
        File f = new File(path);    //先找到目录
        File[] fs = f.listFiles();   //读取目录中所有的文件和目录,保存在数组中
        for (File f1:fs) {     //遍历这些文件
            if (f1.getName().endsWith(".mp3")){  //比较这些文件是否以指定的后缀结尾
                if(f1.isFile()){    //判断是否为文件
                    System.out.println(f1.getName());   //输出
                }
            }
        }
    }

使用过滤器

//获取目录中指定文件2     过滤器方法
    public void readTxt(String path){
        File f = new File(path);    //先找到目录
        File[] files = f.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".txt") && pathname.isFile();  //设置判断条件
            }
        });
        for (File s:files){
            System.out.println(s.getName());
        }
    }

过滤器源码分析

		String ss[] = list();  //将目录下所有的文件和目录的名称保存在数组中
        if (ss == null) return null;  //判断数组是否为空
        ArrayList<File> files = new ArrayList<>();   //声明一个动态数组,
        for (String s : ss) {  //遍历文件名称数组
            File f = new File(s, this);  //遍历到的每一个都创建一个file对象
            //判断过滤器是否为空    ||   调用过滤器中的方法,对每个file对象判断
            if ((filter == null) || filter.accept(f))
                files.add(f);  //满足条件添加到集合中
        }
        //将集合转数组返回
        return files.toArray(new File[files.size()]);

递归读取文件夹

  public void readDir(File f){
        File[] files = f.listFiles();   //获得文件夹中所有的文件对象
        if(Objects.nonNull(files)){     //判断数组是否为空
            for (File file:files) {     //遍历数组
                System.out.println(file.getAbsolutePath());
                if (file.isDirectory()){ //判断是否为文件夹
                    readDir(file);
                }
            }
        }
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值