博客信息

IO流之File类(概述、常见方法、文件列表)

发布时间:『 2019-06-12 10:27』  博客类别:java基础  阅读(624)

概述

用来将文件或者文件夹封装成对象

方便对文件与文件夹的属性信息进行操作

File对象可以作为参数传递给流的构造函数

了解File类中的常用方法

 

注意:流只能操作数据,而想要操作将数据封装成的文件,那么就需要File类;

小李飞刀_IO流


File类的常见方法

1、创建

Boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false和输出流不一样,输出流对象一建立就创建文件,而且文件已经存在,会覆盖;

 

Boolean mkdir():创建文件夹;

Boolean mkdirs():创建多级文件夹

 

2、删除

Boolean delete():删除失败返回false,如果文件正在被使用,则删除不了返回false

Void deleteOnExit():在程序退出时删除指定文件;

 

注意

当一段代码操作完File文件后,想要删除File文件,可能出现删除不了的情况;原因有两点,第一点可能是因为代码出现异常,造成不会执行到删除File的代码;

第二点如果将删除File文件的代码写在finally中,可能出现当执行这行代码的时候,文件还在被使用,那么该文件还是没法删除;比如你无法删除正在播放的视频......

 

 

3、判断

Boolean exists():文件是否存在;

isFile():是否是文件;

isDirectory():是否是文件夹;

isHidden():是否隐藏

isAbsolute():构造函数中是否是绝对路径

 

 

4、获取信息

getName()

getPath():获取相对路径

getParent():获取相对路径的父路径

 

getAbsolutePath():获取绝对路径

Long lastModified()

Long length()


package com.javaxl.io.file;

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

/**
 * @author 小李飞刀
 * @site www.javaxl.com
 * @company
 * @create  2019-06-12 19:09
 */
public class FileDemo {
    public static void main(String[] args) throws IOException {
//        method_1();
//        method_2();
//        method_3();
//        method_4();
        method_5();
    }

    /**
     * createNewFile与delete方法案例
     * @throws IOException
     */
    public static void method_1() throws IOException {
        //单单这一行代码是不会生成FileDemo.txt文件的
        File f = new File("C:\\FileDemo.txt");
        //  创建f文件
        System.out.println(f.createNewFile());
        // 删除f文件
//        System.out.println(f.delete());
    }

    /**
     * exists、canExecute、mkdir、mkdirs方法案例
     * @throws IOException
     */
    public static void method_2() throws IOException {
        File f = new File("C:\\FileDemo.txt");
        System.out.println(f.exists());
        System.out.println(f.canExecute());

        File fs = new File("C:\\dd\\ee\\FileDemo.txt");
//        fs.mkdir();不能创建多级目录
        fs.mkdirs();//用来创建多级目录,注意这里“FileDemo.txt”不是文件,是目录
    }


    /**
     * isDirectory、isFile、isAbsolute案例讲解
     * 记住在判断文件对象是否是文件或者目录时,必须要先判断该文件对象封装的内容是否存在;
     * 通过exists判断,如果不做该判断的话,就会出现既不是文件也不是文件夹的诡异现象
     * @throws IOException
     */
    public static void method_3() throws IOException {
        File f = new File("FileDemo.txt");

//        f.createNewFile();// 没有C:\dd\ee报 “java.io.IOException: 系统找不到指定的路径” 错误;
                                //有C:\dd\ee就输出 false true

        f.mkdirs();// 输出 true false

        System.out.println(f.isDirectory());
        System.out.println(f.isFile());

        System.out.println(f.isAbsolute());
    }


    /**
     * renameTo f1重命名为f2    成功为true反之为false
     * @throws IOException
     */
    public static void method_4() throws IOException {
        File f1 = new File("C:\\FileDemo.txt");
        File f2 = new File("C:\\FileDemo2.txt");
        System.out.println(f1.renameTo(f2));
    }

    /**
     * getPath、getAbsolutePath、getParent案例讲解
     * 该方法返回的是绝对路径中的父目录,如果获取的是相对路径,返回null;
     * 如果相对路径中有上一层目录,那么该目录就是返回结果;
     * @throws IOException
     */
    public static void method_5() throws IOException {
        File f = new File("eee\\FileDemo.txt");
        System.out.println(f.getPath());//  eee\FileDemo.txt
        System.out.println(f.getAbsolutePath()); // E:\workspace\ideaProjects\test\eee\FileDemo.txt
        System.out.println(f.getParent());// eee
    }

}


File对象功能-文件列表

List方法、过滤文件夹下的文件、listFiles方法


package com.javaxl.io.file;

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

/**
 * @author 小李飞刀
 * @site www.javaxl.com
 * @company
 * @create  2019-06-12 20:02
 */
public class FileListDemo {
    public static void main(String[] args) {
//        listDemo();
//        listRootsDemo();
//        listFilterDemo();
        listFilesDemo();
    }

    /**
     *  遍历指定文件夹下的所有文件名(包含文件以及文件夹)
     */
    public static void listDemo() {
//        使用list方法的file对象必须是封装了一个目录,该目录还必须存在
        File file = new File("E:\\2018_y2_讲课\\t216");
        String[] names = file.list();
        for (String name : names) {
            System.out.println(name);
        }
    }

    /**
     * 过滤掉.txt结尾的文件,也就是.txt结尾的文件不展示
     */
    public static void listFilterDemo() {
//        使用list方法的file对象必须是封装了一个目录,该目录还必须存在
        File file = new File("E:\\2018_y2_讲课\\t216");
        String[] names = file.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return !name.endsWith(".txt");
            }
        });
        for (String name : names) {
            System.out.println(name);
        }
    }

    /**
     * 获取计算机中的系统盘符列表(C、D、E、F......)
     */
    public static void listRootsDemo() {
//        使用list方法的file对象必须是封装了一个目录,该目录还必须存在
        File[] files = File.listRoots();
        for (File file : files) {
            System.out.println(file);
        }
    }

    /**
     * 遍历指定文件夹下的所有文件名及大小(包含文件以及文件夹)
     *  文件夹大小则是0
     *  文件大小为自身大小
     */
    public static void listFilesDemo() {
//        使用list方法的file对象必须是封装了一个目录,该目录还必须存在
        File file = new File("E:\\2018_y2_讲课\\t216");
        File[] files = file.listFiles();
        for (File f : files) {
            System.out.println(f.getName() + ":" + f.length());
        }
    }
}


结果如下:

小李飞刀_IO流







关键字:     Java基础       IO流       File类  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有