java8--IO工具类(java疯狂讲义3复习笔记)

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;
            }
        }
    }

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

时间: 2024-10-27 11:38:39

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

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

本章重点介绍java.lang.reflect包下的接口和类 当程序使用某个类时,如果该类还没有被加载到内存中,那么系统会通过加载,连接,初始化三个步骤来对该类进行初始化. 类的加载时指将类的class文件读入内存,并为之创建一个java.lang.class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象.(几乎所有的类都是java.lang.Class的实例); 所以JVM最先初始化的总是java.long.Object类. 在java中,一个类用

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

多线程这块,平时用的框架里都封装好了,只有写批处理和工具包时用过几次.现在水平仅仅限于会用的程度,需要全面深入学习多线程. 主要内容:创建线程,启动线程,控制线程,多线程的同步,线程池,使用线程安全的集合类 16.1.1 线程和进程 线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须有一个父进程.线程可以拥有自己的堆栈,程序计数器和局部变量,但不拥有系统资源,它与父进程的其他线程共享该进程所拥有的全部资源.因为多个线程共享父进程的全部资源,因此编程更加方便,带也需要更加小心. 16.2

《Java疯狂讲义》中关联、组合和聚合的谬误

本文參考例如以下资料(建议阅读): a). difference-aggregation-acquaintance-and-composition-as-used-by-gang-of-four b). AssociationVsAggregationVsComposition c). Design Patterns Elements of Reusable Object-Oriented Software d). Java疯狂讲义(第三版) 1. 问题的由来 我看到的是这本书的第三版,在2.2

参考《Java疯狂讲义》

参考<Java疯狂讲义>Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口(这种接口被称为函数式接口)的实例 1. Lambda表达式入门 下面先使用匿名内部类来改写(6.6介绍的命令模式Command表达式的例子) public class CommandTest{ public static void main(String[] args) { ProcessArray pa = new ProcessArray(); int[]

加密解密工具类(Java,DES)

一个Java版的DES加密工具类,可以用来进行网络数据传输加密,保存密码的时候进行加密. import java.security.Key; import java.security.spec.AlgorithmParameterSpec; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.I

二维码生成工具类java版

注意:这里我不提供所需jar包的路径,我会把所有引用的jar包显示出来,大家自行Google package com.net.util; import java.awt.BasicStroke; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Shape; import java.awt.geom.RoundRectangle2D; import java.a

java疯狂讲义笔记整理(第二版第一部分)

第一章    java语言概述 1.1    java语言的发展简史 1990末:    sun公司“Green计划”(James Gosling领导)        ----目的是智能家电编写一个通用嵌入式控制系统,为此创建oak 1992夏天:    "Green计划"完成新平台的部分功能 1992年11月:    "Green计划"被转为"FirstPerson有限公司"-一个sun的全资子公司,致力于创建一个高度互动的设备 1994夏天:

java工具类——java将一串数据按照gzip方式压缩和解压缩

我要整理在工作中用到的工具类分享出来,也方便自己以后查阅使用,这些工具类都是我自己实际工作中使用的 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.nio

Java8 增强工具类 Arrays 笔记

随手笔记做Arrays工具类分为两类单线程和多线程 以下所有带有下标范围限定的,都为含头不含尾 单线程:1.binarySearch:查找数组中为 key 的 下标 :binarySearch 二分法查找,数组必须有序,且存在此数组中,否则返回负数下标 Arrays.binarySearch(Object[] a,Object key):intArrays.binarySearch(Object[] a, int fromIndex, int toIndex,Object key):int跳至例