java核心学习(十一) IO框架---File类

一、File类

 File类位于java.io包下,代表与平台无关的文件和目录,可以新建、删除、重命名文件和目录,也可以访问文件的某些属性,但是不可以完成文件读写

 下面编写一段例子代码来体会File类的用法。

 

package IOTest;

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.getAbsolutePath());
        //获取上一级路径
        System.out.println(file.getAbsoluteFile().getParent());
        //在当前路径下创建一个临时文件
        File temFile = File.createTempFile("FileTest",".txt",file);
        //指定当JVM退出时删除该文件
        temFile.deleteOnExit();
        //以系统当前时间作为新文件名来创建新文件
        File newFile = new File(System.currentTimeMillis()+"");
        //以指定的newFile对象来创建一个文件
        System.out.println("newFile对象是否存在:"+(newFile.exists()?"存在":"不存在"));
        newFile.createNewFile();
        System.out.println("newFile对象是否存在:"+(newFile.exists()?"存在":"不存在"));
        //以newFile对象来创建一个目录,因为newFile已存在,所以下面方法返回false
        System.out.println(newFile.mkdir());
        //使用list()方法列出当前路径下的所有文件和路径
        String[] fileList = file.list();
        for (String s:fileList
             ) {
            System.out.println(s);
        }
        //listRoots()静态方法列出所有的磁盘根路径
        File[] roots = File.listRoots();
        for (File root: roots
             ) {
            System.out.println(root);
        }
    }
}
.
null
E:\app\talkroom2\WhhTalkRoom_server\.
E:\app\talkroom2\WhhTalkRoom_server
newFile对象是否存在:不存在
newFile对象是否存在:存在
false
.idea
1505285884856
FileTest8400817717936644656.txt
pom.xml
src
target
WhhTalkRoom_server.iml
C:\
D:\
E:\
F:\

Process finished with exit code 0

  可以看到File类对于访问文件系统已经提供了很多的方法了,但是相比于我们直接在linux系统里使用命令操作文件系统还是有很大的差距,不过若真的使用命来代替文件访问,可以使用Runtime类的exec方法,具体用到的时候可以查看文档和工具书。不过现在一般会使用NIO.2 的Files和Path和Paths类来全面的访问文件和文件系统

 

二、文件过滤器

  FilenameFilter接口是一个函数式接口,File类的list()方法可以接受一个实现FilenameFilter接口的类的实例来作为参数

package IOTest;

import java.io.File;
import java.io.FilenameFilter;

public class FilenameFilterTest {
    public static void main(String[] args){
        File file = new File(".");
        String[] nameList = file.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                //文件已java为后缀,或者是一个目录则返回true,它的用法只需要传入根据name和dir的过滤条件。(命令模式的典型例子)
                return name.endsWith(".java") || new File(name).isDirectory();
            }
        });
        for (String name :nameList
             ) {
            System.out.println(name);
        }
    }
}

  输出

.idea
src
target

Process finished with exit code 0

 

 

posted @ 2017-09-13 15:33  The_shy  阅读(247)  评论(0编辑  收藏  举报