第十五章输入/输出-15.1File类

Java的IO通过java.io包下的类和接口支持,在java.io包下主要包括输入、输出两种IO流,每种输入、输出流又可以分为字节流和字符流两大类。Java的IO流使用了装饰器设计模式,它将IO流分成底层节点流和山曾处理流。

Java7在java.nio及其子包下提供了一系列全新的API,被称为NIO2。同时介绍Java对象的序列化机制,使用序列化机制可以把内存中的Java对象转换成二进制字节流。

15.1File类

 15.1.1访问文件和目录

package com.cdmt.collection.io;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

import java.io.File;
import java.io.IOException;

public class FileTest {
    public static void main(String[] args) throws IOException {
        //以当前路径来创建一个File对象
        File file = new File(".");
        System.out.println(file.getName());
        System.out.println(file.getParent());
        System.out.println(file.getAbsoluteFile());
        System.out.println(file.getAbsoluteFile().getParent());
        //当前路径下创建一个零时文件
        File tmpFile = File.createTempFile("aaa",".txt",file);
        //Jvm退出时删除该文件
        tmpFile.deleteOnExit();
        //以系统当前时间作为新文件名来创建
        File newFile = new File(System.currentTimeMillis() + "");
        System.out.println("newFile对象是否存在: " + newFile.exists());
        //指定newFile对象创建一个文件
        newFile.createNewFile();
        //以newFile对象来创建一个目录,因为newFile已经存在
        //所以下面方法返回false,即无法创建该目录
        newFile.mkdir();
        //使用list()方法列出当前路径下的所有文件和路径
        String[] fileList = file.list();
        System.out.println("======当前路径下所有文件和路径如下=====");
        for(String fileName : fileList){
            System.out.println(fileName);
        }
        //listRoots()静态方法列出所有的磁盘根路径
        File[] roots = File.listRoots();
        System.out.println("======系统所有根路径=====");
        for(File root : roots){
            System.out.println(root);
        }
    }
}

 结果:

第十五章输入/输出-15.1File类_第1张图片

PS:

windows的路径分割使用反斜线(\),而java程序中的反斜线表示转义字符, US哦一如果需要在windos的路径下包括反斜线,则应该使用两条反斜线,如F:\\abc\\test.txt,或者直接使用斜线(/)也可以,Java程序支持将斜线当成平台无关的路径分隔符。

15.1.2文件过滤器

 File类的list()方法可以接受一个FilenameFilter参数,通过该参数列出符合条件的文件。

package com.cdmt.collection.io;

import java.io.File;

public class FilenameFilterTest {
    public static void main(String[] args) {
        File file = new File(".");
        //使用Lambda表达式实现文件过滤器,要么是java文件要么是文件夹而不是文件
        String[] nameList = file.list((dir,name)->name.endsWith(".java")||new File(name).isDirectory());
        for(String name : nameList){
            System.out.println(name);
        }
    }
}

结果:

第十五章输入/输出-15.1File类_第2张图片

 

你可能感兴趣的:(Java基础)