Paths类

public static void pathTest(){
Path path = Paths.get("~");
System.out.println(path);
System.out.println(path.getNameCount());
System.out.println(path.getRoot());
Path absolutePath = path.toAbsolutePath();
System.out.println(absolutePath);
System.out.println(absolutePath.getNameCount());
System.out.println(absolutePath.getFileSystem());
//依次打印父路径
absolutePath.forEach(name->System.out.println(name));
}

Files类 ,这个是重点

public static void filesTest() throws FileNotFoundException, IOException{
//复制文件
Files.copy(Paths.get("abc.txt"), new FileOutputStream("testFile/abc2.txt"));
//判断是否隐藏文件
System.out.println(Files.isHidden(Paths.get("abc.txt")));
//读取文件的所有行到list
List<String> lines = Files.readAllLines(Paths.get("abc.txt"));
lines.forEach (line -> System.out.println(line));
//文件大小
System.out.println(Files.size(Paths.get("abc.txt")));
//向文件里写入东西
List<String> poem = new ArrayList<String>();
poem.add("quzhinannnnnnnnnnn曲志楠南安安那那那那那");
poem.addAll(lines);
Files.write(Paths.get("testFile/path.txt"), poem, Charset.forName("utf-8"));
//列出文件目录下的所有文件(不递归)
Files.list(Paths.get("/")).forEach(Name -> System.out.println(Name));
//打印所有文件到控制台
Files.lines(Paths.get("abc.txt"),Charset.forName("utf-8")).forEach(line -> System.out.println(line));
//查看存储空间
FileStore fs = Files.getFileStore(Paths.get("/"));
System.out.println(fs.getTotalSpace());
}

FileVisitor遍历文件和目录

public static void walkFileTree() throws IOException{
Files.walkFileTree(Paths.get("."), new SimpleFileVisitor<Path>() { @Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
// TODO Auto-generated method stub
// return super.preVisitDirectory(dir, attrs);
System.out.println("正在访问:" + dir + "目录");
return FileVisitResult.CONTINUE;
} @Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
// TODO Auto-generated method stub
// return super.visitFile(file, attrs);
System.out.println("\t正在访问" + file + "文件");
if (file.endsWith("LearnIO.java")) {
System.out.println("******找到目标文件LearnIO.java******");
return FileVisitResult.TERMINATE; // 找到了就终止
}
return FileVisitResult.CONTINUE; // 没找到继续找
}
}); ;
}

使用WatchService监控文件变化

private static void WatchServiceTest() throws IOException, InterruptedException {
// TODO Auto-generated method stub
WatchService watchService = FileSystems.getDefault().newWatchService();
Paths.get(".").register(watchService,
StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_DELETE,
StandardWatchEventKinds.ENTRY_MODIFY
);
while(true){
//获取下一个文件的变化事件
WatchKey key = watchService.take();
for(WatchEvent<?> event : key.pollEvents()){
System.out.println(event.context()+"文件发生了"
+event.kind()+"事件");
}
//重设WatchKey
boolean valid = key.reset();
//如果重设失败,退出监听
if(!valid){
break;
}
}
}

访问文件属性,这个感觉用的不多,用到时再来看吧.

java8--IO工具类(java疯狂讲义3复习笔记)的更多相关文章

  1. java8--类加载机制与反射(java疯狂讲义3复习笔记)

    本章重点介绍java.lang.reflect包下的接口和类 当程序使用某个类时,如果该类还没有被加载到内存中,那么系统会通过加载,连接,初始化三个步骤来对该类进行初始化. 类的加载时指将类的clas ...

  2. java8--网络编程(java疯狂讲义3复习笔记)

    重点复习一下网络通信和代理 java的网络通信很简单,服务器端通过ServerSocket建立监听,客户端通过Socket连接到指定服务器后,通信双方就可以通过IO流进行通信. 需要重点看的工具类:I ...

  3. java8--NIO(java疯狂讲义3复习笔记)

    NIO采用内存映射文件的方式处理输入输出,NIO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件了(这种方式模拟了操作系统上的虚拟内存的概念),通过这种方式来进行输入输出比传统的 ...

  4. java8--异常处理(java疯狂讲义3复习笔记)

    try,catch,finally,throw,throws java将异常分为两种,Checked异常和Runtime异常. IndexOutOfBoundsException NumberForm ...

  5. java8--多线程(java疯狂讲义3复习笔记)

    多线程这块,平时用的框架里都封装好了,只有写批处理和工具包时用过几次.现在水平仅仅限于会用的程度,需要全面深入学习多线程. 主要内容:创建线程,启动线程,控制线程,多线程的同步,线程池,使用线程安全的 ...

  6. java8--IO(java疯狂讲义3复习笔记)

    产生文件 File file = new File("abc.txt"); if(!file.exists()){ System.out.println(file.exists() ...

  7. java8--Mysql数据库与JDBC编程(java疯狂讲义3复习笔记)

    JDBC:java database connectivity 数据库基本命令: 启动 show databases; create database [if not exists] 数据库名; do ...

  8. 参考《Java疯狂讲义》

    参考<Java疯狂讲义>Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口(这种接口被称为函数式接口)的实例 1. Lambda ...

  9. JavaSE-基础语法(二)-系统类(java.lang.*)和工具类(java.util.*)

    系统类(java.lang.*)和工具类(java.util.*) 一.系统类(java.lang.*) 这个包下包含java语言的核心类,如String.Math.System和Thread类等,使 ...

随机推荐

  1. 条款17:以独立语句将newed对象置入智能指针(Store newed objects in smart pointers in standalone statements)

    NOTE: 1.以独立语句将newed对象存储于智能指针内.如果不这样做,一旦异常被抛出,有可能导致难以察觉的资源泄漏.

  2. Mysql 参数优化

  3. Linux文本检索命令grep笔记

    grep是在linux系统中基于行文本非常实用检索工具,通过该命令可以将匹配到的结果信息输出到终端控制台. 语法格式:grep [-ivnc] '需要匹配的内容' 文件名 常用参数说明: -i 检索的 ...

  4. while循环处理列表和字典

    一.在列表之间移动元素 假设有一个列表,里面存放的是网站新注册但没有验证的用户,验证这些用户后,如何将它们移动到另一个已验证用户列表中呢? 其中一种方法是使用while循环,在验证用户的同时,将其从未 ...

  5. C#语言之字符串和正则表达式

    本文将完成以下两个目标: 一.创建字符串: 二.正则表达式: 首先,我先来介绍一下System.String类: System.String是一个类,专门用于存储字符串,允许对字符串进行许多操作. 使 ...

  6. Activiti流程定义部署方式

    1 bpmn png方式部署 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); /**部署流程定义(从cl ...

  7. jquery的ajax和getJson跨域获取json数据

    目前浏览器端跨域访问常用的两种方法有两种: 1.通过jQuery的ajax进行跨域,这其实是采用的jsonp的方式来实现的. jsonp是英文json with padding的缩写.它允许在服务器端 ...

  8. XTU 二分图和网络流 练习题 J. Drainage Ditches

    J. Drainage Ditches Time Limit: 1000ms Memory Limit: 32768KB 64-bit integer IO format: %I64d      Ja ...

  9. CodeForces - 462B Appleman and Card Game

    是一道简单题 将字母从个数多到小排序 然后 再按题目算法得到最多 但是注意 数据类型声明 money要为long long #include <iostream> #include < ...

  10. 【POJ3264】Balanced Lineup(RMQ)

    题意:每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连续的牛来进行比赛 ...