一·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);
}
}
}
}