1.使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件:

代码:

package test;

import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitOption;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.EnumSet;
public class KnownSize implements FileVisitor {
private final PathMatcher matcher;
private final long accepted_size;
public KnownSize(String glob,long accepted_size) {
matcher= FileSystems.getDefault().getPathMatcher("glob:" +glob);
this.accepted_size=accepted_size;
}
void search(Path file) throws IOException {
long size = (Long) Files.getAttribute(file, "basic:size");
if(size ==accepted_size) {
System.out.println(file);
}
}
@Override
public FileVisitResult postVisitDirectory(Object dir, IOException exc)throws IOException {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(Object dir, BasicFileAttributes attrs)throws IOException {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Object file, BasicFileAttributes attrs)throws IOException {
search((Path) file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Object file, IOException exc)throws IOException {
return FileVisitResult.CONTINUE;
}
public static void main(String[] args) throws IOException{
String glob= "*.jpg";
long size = 1048576;//1M=1024k=1048576字节
Path fileTree = Paths.get("C:/");
KnownSize walk=new KnownSize(glob, size);
EnumSet opts=EnumSet.of(FileVisitOption.FOLLOW_LINKS);
System.out.println("C盘中大小等于1M的文件有");
Files.walkFileTree(fileTree, opts, Integer.MAX_VALUE, walk);
}
}

运行结果:

    2.使用Files. walkFileTree()找出指定文件夹下所有扩展名为.txt和.java的文件。

package test;

import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes; public class WalkFileTree {
public static void main(String[] args) throws IOException {
String glob ="glob:**/*.{java,txt}";//采用组模式查找拓展名为.java和.txt的文件
String path ="E:/";//想要查询的目录
match(glob,path);
} public static void match(String glob,String location)throws IOException{
final PathMatcher pathmatcher =FileSystems.getDefault().getPathMatcher(glob);//新建pathmatcher对象用FileSystems.getDefault().getPathMatcher()方法接收匹配的字符串,返回一个可用的pathmatcher对象,然后进行匹配工作
Files.walkFileTree(Paths.get(location), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path path,BasicFileAttributes attrs)throws IOException{
if (pathmatcher.matches(path)) {
System.out.println(path);
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc)
throws IOException {
return FileVisitResult.CONTINUE;
}});
}
}

运行结果:

Java课堂动手动脑的更多相关文章

  1. java课堂动手动脑及课后实验总结

      动手动脑一:枚举   输出结果: false false true SMALL MEDIUM LARGE 分析和总结用法 枚举类型的使用是借助ENUM这样一个类,这个类是JAVA枚举类型的公共基本 ...

  2. java课堂动手动脑总结

    java有8种基本数据类型:byte,int,short,long,boolean,char,float,double. 对应的为:Byte,Int,Short,Long,Boolean,Charec ...

  3. JAVA课堂动手动脑实验--方法的重载定义,组合数的递归算法

    1. 请看以下代码,你发现了有什么特殊之处吗? 答:此程序中的两个方法虽然方法名一样,但是参数的数据类型不同: 这是方法的重载,方法的重载需要满足的条件: 1)方法名相同: 2)参数类型不同,参数个数 ...

  4. Java课堂 动手动脑6

    一.下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么? m=d;d=m;d=(Dog)m;d=c;c=(Cat)m; 先进行自我判断, 1.代码: class Mammal{} c ...

  5. Java课堂 动手动脑5

    1.了解棋盘打印:利用二维数组输出一个15*15的棋盘,棋盘的原素为“+”,就是输出一个横纵都是15个“+”的二维数组,然后再以坐标形式输入棋子“●”,替换掉原来棋盘里的“+”.再编写代码. 电脑随机 ...

  6. java课堂 动手动脑3

    (1) 该函数没有赋初值再就是如果类提供一个自定义的构造方法,将导致系统不在提供默认的构造方法. (2) public class test { public static void main(Str ...

  7. JAVA课堂-动手动脑1

    一.Enum:一般用来表示一组相同类型的常量.对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用”==”来替换equals,枚举对象里面的值都必须是唯一的. 代码: public  ...

  8. java课堂动手动脑博客

    随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 要求将设计思路.程序流程图.源程序代码.结果截图.编程总结等发表到博客园. (截止时间2015 ...

  9. java课堂 动手动脑2

    1.编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数 Modulus=231-1=int.MaxValue, Multiplier=75=16807. C=0 当显示过231-2个数 ...

随机推荐

  1. Editor placeholder in source code错误

    When you insert code via autocompletion (or via a code snippet, sometimes), there may be placeholder ...

  2. CF1142B Lynyrd Skynyrd

    题目 有两种做法: 第一种是\(O(nlog\ n)\)的. 我们预处理两个数组: \(pre_i\)表示\(p\)中\(i\)前面的那个数是\(pre_i\). \(lst_i\)表示\(a\)中\ ...

  3. 父进程pid和子进程pid的大小关系

    如果进程ID最大值没有达到系统进程数的上限,子进程比父进程ID大.但是如果进程ID达到上限,系统会分配之前分配但是已经退出的进程ID给新进程,这样有可能出现子进程ID比父进程小.

  4. 03: saltstack和ansible的区别和原理

    1.1 SaltStack.Ansible.Puppet比较 1.SaltStack 1. saltStack由Python编写,为server-client模式的系统,自己本身支持多master. ...

  5. QQ音乐爬虫

    #今日目标 **QQ音乐爬虫** 今天要爬取的是QQ音乐任意歌手的所有音乐歌词,因为笔者是周杰伦的忠实粉丝,所以专门写了个爬虫来爬取他的音乐的歌词,因为他的音乐在咪咕音乐可以听,所以便没有去爬取. 好 ...

  6. 用slot和component实现表单共用

    业务需求 在oa开发中,有许多流程,每个流程里都会有很多字段,比如流程标题.拉下选择,附件等等,有些是每个流程都会有的,有些是特有的,按常规的方法开发,就为为一个流程写一个表单,校验,提交.如果新来流 ...

  7. ExpressionTree学习笔记

    概述: 这段时间需要制定自定义查询条件,感觉有必要学习ExpressionTree. 学习参考资料:https://msdn.microsoft.com/en-us/library/mt654263. ...

  8. vue video.js使用

    插件github地址:https://github.com/videojs/video.js 这边做一个切换视频vue url的解决记录 this.$nextTick(() => { let u ...

  9. vue与react对比

    相同点 1.都使用 virtual DOM 2.都是组件化开发 or 都提供了组件化的视图组件 3.数据的改变会引起视图的二次渲染 4.都只有骨架,其他的功能如路由.状态管理等是框架分离的组件. 5. ...

  10. Python基础——函数的装饰器

    等待更新…………………… 后面再写