java基础

需求:递归遍历一个目录,筛选出需要查找的文件类型 实现:分别用Java流式实现和递归实现 代码:

1package hello; 2 3import java.io.File; 4import java.io.IOException; 5import java.nio.file.FileSystems; 6import java.nio.file.Files; 7import java.nio.file.Path; 8 9/** 10 * Description: 11 * <p> 12 * 13 * @author shuvidora 14 * @date 2019/6/12 12:27 15 */ 16class WalkTree { 17 /** 18 * 流式实现筛选指定目录下指定类型的文件 19 */ 20 public void walkTree() { 21 Path start = FileSystems.getDefault().getPath("src"); 22 try { 23 Files.walk(start) 24 .filter(path -> path.toFile().isFile()) 25 .filter(path -> path.toString().endsWith(".java")) 26 .forEach(System.out::println); 27 } catch (IOException e) { 28 e.printStackTrace(); 29 } 30 } 31 32 /** 33 * 默认只扫描当前文件夹 34 * @param f 35 */ 36 public void filterFileType(File f) { 37 filterFileType(f, false); 38 } 39 40 /** 41 * 42 * @param file 43 * @param isRecursive 是否递归子文件夹 44 */ 45 public void filterFileType(File file, boolean isRecursive) { 46 if (file.isDirectory()) { 47 File[] files = file.listFiles(); 48 for (File f : files) { 49 if (f.isFile()) { 50 if (f.getName().endsWith(".java")) { 51 System.out.println(f.getName()); 52 } 53 } else if(isRecursive && f.isDirectory()) { 54 filterFileType(f, true); 55 } 56 } 57 } 58 } 59} 60 61// 枚举实现单例模式,线程安全,非延迟加载 62enum FileUtils { 63 INSTANCE; 64 private WalkTree instance; 65 FileUtils() { 66 instance = new WalkTree(); 67 } // 默认private构造方法 68 public WalkTree getInstance() { 69 return instance; 70 } 71} 72 73public class FileTest { 74 public static void main(String[] args) { 75 FileUtils main = FileUtils.INSTANCE; 76 WalkTree walkTree = main.getInstance(); 77 //walkTree.walkTree(); //1 78 79 File file = new File("src"); 80 walkTree.filterFileType(file, true); //2 81 } 82}

输出:

1//1 2src\hello\Counter.java 3src\hello\FileTest.java 4src\housekeeping\Burrito.java 5 6 7//2 8Counter.java 9FileTest.java 10Burrito.java

拓展

JS中的目录遍历 - https://www.w3cschool.cn/fjvyha/ip9wrozt.html

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java日期时间API系列31

  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前

使用Stream流递归实现遍历树形结构

可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理,我们一起来看看,代码实现为了实现简单,就模拟查看数据库所有数据到List里面。比如现在有一张菜单表,具体数据如下:下面我们就来模拟这一操作,递归组装树形结构:@Autowi

java递归算法+遍历磁盘文件

package com.cnse.io.ioDemo;import java.io.File;//java遍历磁盘下所有的文件 递归 recursionpublic class FlList {    public static void main(String args) {

SQL语句实现递归查询

  最近在开发过程为项目中处理上下层组织关系的时候用到了递归查询,以前一般用的是直接在java中使用递归或者使用SQL的话就是编写存储过程,然后去调用这个存储过程。但是,使用java实现递归的话感觉比较麻烦,而用SQL写存储过程的话一般不建议这么做,所以这边就想到了直接用SQL实现递归。  这里实现递归的是系统中的一个中间关系表(ORG\_TAB

二分查找法的递归和非递归的实现

//二分查找法非递归实现,在一个有序的数组中查找e元素的位置,找不到返回1publicstaticintbinarySearch(intdata,inte){intl0;intrdata.length1;while(l<r){

java基础 - HelloWorld