JAVA中的Stream流和File类

  • Stream流
  • 获取方法
  • 中间方法
  • 终结方法
  • 收集方法
  • File类
  • 常用构造方法:
  • 创建方法
  • 删除方法
  • 判断方法
  • 获取方法
  • listFiles()方法


Stream流

就是一个Stream类, 使用这个类可以很方便的处理集合和数组

优点

  • 简化代码的开发

注意事项:

  • JDK8版本才能使用Stream类

获取方法

获取一个stream类的对象

单列集合

使用默认方法stream()生成流

Stream<String> stream = list.stream();

双列集合

不能直接使用必须先转换成单列集合

//使用keySet()方法将集合中的key全部提取到一个单列集合中, 再使用该单列集合生成流
Stream<String> stream = hm.keySet().stream();
//使用entrySet()方法将集合中的键值对放入到一个个对象中再将这些对象+
//全部提取到一个单列集合中, 再使用该单列集合生成流
Stream<String> stream = hm.entrySet().stream();

数组

通过Arrays中的静态方法stream()生成流

Arrays.stream(数组名);

可变参数

通过Stream接口的静态方法of()生成流

Stream<Integer> integerStream = Stream.of(1, 2, 3);

中间方法

执行完一个方法后, Stream流还可以继续执行其他操作

常用方法:

  • filter(): 对流中的数据进行相应的过滤操作
    如果是true则表示保存该元素, 若是false表示要过滤的元素
  • map(): 类型转换
  • sorted(): 排序
  • limit(n): 将流中的前n个元素组成新的流并返回
  • skip(n): 跳过前n个元素,将剩余的元素组成新的流并返回
  • concat(Stream a, Stream b): 将a和b合并为一个流
  • distionct(): 去除流中重复的元素(依赖的是 hashCode() 和 equals() 方法)

终结方法

调用stream类的方法之后, 如果这个方法的返回值的类型不是stream类型,那么该方法就是终结方法

常用方法:

  • forEach(): 对调用该方法的流中的每个元素执行操作
  • count(): 返回此流中元素的个数

注意事项:

  • count()方法返回的是流中的元素的个数,不是集合中元素的个数
  • 在Stream流中无法直接修改集合、数组等数据源中的数据
  • 同一个stream对象只能调用一次方法

收集方法

使用Stream流的方式对数据操作完毕后, 可以把流中的数据收集到新的集合中

常用方法:

  • collect(): 把结果收集到集合中

工具类Collectors提供了具体的收集方式:

  • Collector toList(): 把元素收集到List集合中
  • Collector toSet(): 把元素收集到Set集合中
  • Collector toMap(): 把元素收集到Map集合中

File类

对硬盘上的文件/文件夹本身进行操作

new File("文件或文件夹路径");

绝对路径: 是一个完整的路径以盘符开始,确定之后就不会发生改变

相对路径: 相对于参照物的路径 参照物: 当前项目的存储路径

常用构造方法:

  • file(“路径”): 通过给定的路径字符串转换为抽象路径名创建新的File

注意事项: 只使用new File()是不会自动将对应的文件或文件夹创建出来的,只有调用创建方法后才会进行创建

创建方法

  • createNewFile(): 只能用于创建文件
  • mkdirs(): 创建多级文件夹,也可以创建单级文件夹(只能创建文件夹)

注意事项:

  • 使用createNewFile()方法创建文件,若指定的文件已存在则会创建失败否则会创建成功

删除方法

  • delete(): 删除指定路径的文件或文件夹

注意事项: 若要删除文件夹必须保证该文件夹中没有任何文件才能进行删除(删除后的文件夹不会在回收站中保留)

判断方法

  • isDirectory(): 判断是否为文件夹
  • isFile(): 判断是否为文件
  • exists(): 判断文件或文件夹是否存在

获取方法

  • getName(): 获取该文件或文件夹的名称
  • getAbsolutePath(): 获取该文件或文件夹的绝对路径
  • listFile(): 获取指定文件夹中的所有文件或文件夹的File对象数组

注意事项:

  • 文件夹不存在时、给定的路径为一个文件时、给定的路径需要权限才能进入时返回值均为null
  • 可以查询出隐藏文件、文件夹
  • 空文件夹返回的是一个长度为0的数组

listFiles()方法

获取该文件夹中所有的文件和文件夹的File对象(包括隐藏文件和文件夹)

代码格式

File file = new File("文件夹路径");
File[] files = file.listFile();