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. C/C++函数指针详解(转)

    这两天在研究C/C++的函数指针,找到一篇讲解比较详细的博客,内容有点多,但是讲解得比较详细,适合初学者.特转之: 1.     无处不见的函数指针 使用函数指针可以设计出更优雅的程序,比如设计一个集 ...

  2. 【Codeforces 25C】Roads in Berland

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 用floyd思想. 求出来这条新加的边影响到的点对即可. 然后尝试更新点对之间的最短路就好. 更新之后把差值从答案里面减掉. [代码] #in ...

  3. 关于db访问层的封装设计感想 dbpy项目的开发

    dbpy dbpy是一个python写的数据库CURD人性化api库.借鉴了 webpy db 和 drupal database 的设计. 如果喜欢 tornado db 或者 webpy db这类 ...

  4. POJ-1861,Network,最小生成树水题,,注意题面输出有问题,不必理会~~

    Network Time Limit: 1000MS   Memory Limit: 30000K          Special Judge http://poj.org/problem?id=1 ...

  5. Linux使用Mutt发送邮件/附件

    使用Mutt发邮件极其方便,只需要一条命令即可发送或者批量发送邮件 功能说明:E-mail管理程序. 语 法:mutt [-hnpRvxz][-a<文件>][-b<地址>][- ...

  6. POJ 2375 Cow Ski Area【tarjan】

    题目大意:一个W*L的山,每个山有个高度,当且仅当一个山不比它相邻(有公共边的格子)的山矮时能够滑过去,现在可以装化学电梯来无视山的高度滑雪,问最少装多少电梯使得任意两点都可到达 思路:最后一句话已经 ...

  7. PHP应用日期与时间

    <?php/* 时间戳 * * 1. 是一个整数 * 2. 1970-1-1 到现在的秒数 1213212121 * * 2014-02-14 11:11:11 * * 02/14/2014 1 ...

  8. captcha库报错"OSError: cannot open resource"

    问题描述 在win平台上python虚拟环境下使用captcha库生成验证码报错OSError: cannot open resource 代码 from captcha.image import I ...

  9. 金明的预算方案(codevs 1155)

    题目描述 Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只 ...

  10. 事件和委托:第 5 页 委托、事件与Observer设计模式

    原文发布时间为:2008-11-01 -- 来源于本人的百度文章 [由搬家工具导入] 委托、事件与Observer设计模式 范例说明 上面的例子已不足以再进行下面的讲解了,我们来看一个新的范例,因为之 ...