指定根目录下,查找根目录所有文件中,统计文件中给定单词的出现次数。运用了Java11 引入的Path类和其静态方法of() 。 Java8中Stream流的 filter()筛选,collect()

本篇讲述了在指定根目录下,查找根目录所有文件中,统计文件中给定单词的出现次数

运用了Java11 引入的Path类和其静态方法of()Java8Stream流的 filter()筛选,collect() 收集 ,forEach()遍历。 Files.walk()遍历目录和文件。

Path.of()方法接收一个表示路径的字符串作为参数,并返回一个Path对象。

Path of = Path.of("C:\\Users\\23988\\IdeaProjects\\Multithreaded\\src\\com\\executors");
System.out.println(of);

运行结果:

在这里插入图片描述

Files.walk(of)是Java中用于遍历目录和文件的方法之一。它返回一个Stream<Path>对象,该对象包含了指定根目录下的所有子目录和文件的路径。

Path of = Path.of("C:\\Users\\23988\\IdeaProjects\\Multithreaded\\src\\com\\executors");
Stream<Path> entries = Files.walk(of);//entries 条目
entries.forEach(System.out::println);//用Stream.forEach进行遍历打印

路径下的文件:

在这里插入图片描述

运行结果:

在这里插入图片描述

filter() :筛选

filter(Files::*isRegularFile*): 筛选出普通文件

filter(Files::*isRegularFile*).forEach(System.*out*::println);筛选出普通文件,并使用forEach()方法打印每个文件的路径。

 Path of = Path.of("C:\\Users\\23988\\IdeaProjects\\Multithreaded\\src\\com\\executors");
Stream<Path> entries = Files.walk(of);//entries 条目
entries.filter(Files::isRegularFile).forEach(System.out::println);

运行结果:

在这里插入图片描述

collect(Collectors.toSet())是一个终端操作,将筛选后的文件路径结果收集到一个Set集合中。

Path of = Path.of("C:\\Users\\23988\\IdeaProjects\\Multithreaded\\src\\com\\executors");
Stream<Path> entries = Files.walk(of);//entries 条目
Set<Path> set = entries.filter(Files::isRegularFile).collect(Collectors.toSet());
for (Path file:set) {//forEach语句
    System.out.println("file"+file);
}

运行结果:

在这里插入图片描述

Scanner对象的方法读取文件中的数据,并将其打印出来。 需要结合hasNext(),next(),nextLine()等方法

haNext():判断遍历的下一个对象是否为空

next():遍历一句

nextLine():遍历一行

Path of = Path.of("C:\\Users\\23988\\IdeaProjects\\Multithreaded\\src\\com\\executors");
Stream<Path> entries = Files.walk(of);//entries 条目
Set<Path> set = entries.filter(Files::isRegularFile).collect(Collectors.toSet());
for (Path file:set) {
	System.out.println("file"+file);
	Scanner in = new Scanner(file);
	while (in.hasNext()){
   		String next = in.nextLine();
   		System.out.println("next:"+next);
	}
}

运行结果:
在这里插入图片描述

在这里插入图片描述

in.next().equals("import"):查看遍历的结果中是否有improt这个字符串。

最后打印出在指定根目录下的文件中,import出现的次数。在这里就是找那四个java文件中(内容),import出现的次数。

Path of = Path.of("C:\\Users\\23988\\IdeaProjects\\Multithreaded\\src\\com\\executors");
int count=0;
Stream<Path> entries = Files.walk(of);//entries 条目
Set<Path> set = entries.filter(Files::isRegularFile).collect(Collectors.toSet());
for (Path file:set) {
    System.out.println("file"+file);
    Scanner in = new Scanner(file);
     while (in.hasNext()){
         if (in.next().equals("import")){
              count++;
          }
      }
}
System.out.println("count:"+count);

运行结果:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的Kotlin代码示例,可以扫描设备所有存储空间的垃圾文件,并返回它们的路径: ```kotlin import android.os.Environment import java.io.File fun calculateTotalSize(file: File): Long { var size: Long = 0 if (file.isDirectory) { val files = file.listFiles() ?: return 0 for (f in files) { size += calculateTotalSize(f) } } else { size = file.length() } return size } fun getJunkFiles(root: File): List<File> { val junkFiles = mutableListOf<File>() if (root.isDirectory) { val files = root.listFiles() ?: return emptyList() for (file in files) { if (file.isDirectory) { junkFiles.addAll(getJunkFiles(file)) } else { val fileSize = calculateTotalSize(file) if (fileSize == 0L) { junkFiles.add(file) } } } } return junkFiles } fun getAllExternalStorage(): MutableList<File> { val allStorage = mutableListOf<File>() val externalStorageVolumes = ContextCompat.getExternalFilesDirs(applicationContext, null) for (file in externalStorageVolumes) { if (file != null && Environment.isExternalStorageRemovable(file)) { allStorage.add(file) } } return allStorage } fun getJunkFilesPaths(): List<String> { val allStorage = getAllExternalStorage() val junkFilesPaths = mutableListOf<String>() for (storage in allStorage) { val junkFiles = getJunkFiles(storage) for (file in junkFiles) { junkFilesPaths.add(file.absolutePath) } } return junkFilesPaths } ``` 该代码包含以下功能: - `calculateTotalSize`函数将递归计算文件的总大小。 - `getJunkFiles`函数将递归扫描给定根目录下的所有文件,并返回所有大小为0的文件。 - `getAllExternalStorage`函数将返回所有可移动的存储设备。 - `getJunkFilesPaths`函数将遍历所有存储设备,找到所有的垃圾文件,并返回它们的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值