Back End

javaFile类与I/O流

PineappleCat · 5月6日 · 2020年 627次已读

1.File类的使用

/**
 * @ClassName: java高级进阶
 * @Description:File类的使用
 *
 * 1.File类的一一个对象,代表-一个文件或一一个文件 目录(俗称:文件夹)
 * 2.File类声明在java. io包下
 * 3. File类中涉及 到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,
 *    并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。
 * 4.后续Filej类的对象常会作为参数传递到流的构造器中,指明读取或写入的"终点".
 **/
public class FileTest {
    /*
       如何创建File类的实例
       public File(String pathname)
            以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果
             pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
                 ➢绝对路径:是一个固定的路径,从盘符开始
                 ➢相对路径:是相对于某个位置开始
       public File(String parent,String child)
            以parent为父路径,child为 子路径创建File对象。
       public File(File parent,String child)
            根据一个父File对象和子文件路径创建File对象

       2.路径分隔符
            windows: \ \
            unix:/
     */
    @Test
    public void test(){
        //内存层面的对象
        //构造器1
        File file = new File("hello.txt");//相对于当前module 相对路径
        File file2 = new File("G:\\OneDrive\\OneDrive - sdtbu.edu.cn\\java知识准备\\java编程源码\\java高级进阶\\src\\com\\test\\IO\\he.txt");//绝对路径
        System.out.println(file);
        System.out.println(file2);

        //构造器二
        File file3 = new File("G:\\OneDrive\\OneDrive - sdtbu.edu.cn\\java知识准备\\java编程源码\\java高级进阶\\src\\com\\test\\IO","he");//文件目录
        System.out.println(file3);
        //构造器三
        File file4 = new File(file3,"he.txt");//文件目录
        System.out.println(file4);
    }
    /*
    获取操作:
    public String getAbsolutePath(): 获取绝对路径
    public String getPath() :获取路径
    public String getName() :获取名称
    public String getParent(): 获取上层文件目录路径。若无,返回null
    public Long length() :获取文件长度(即:字节数)。不能获取目录的长度。
    public long LastModified() :获取最后一次的修改时间,毫秒值
    如下的两个方法适用于文件目录:
    public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
    public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组

    public boolean renameTo(File dest): 把文件重命名为指定的文件路径
    比如: file1. renameTo(file2)为例:返回布尔值
    要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在。
    */

    /*
   判断功能
    public boolean isDirectory(): 判断是否是文件目录
    public boolean isFile() :判断是否是文件
    public boolean exists() :判断是否存在
    public boolean canRead() :判断是否可读
    public boolean canWrite() :判断是否可写
    public boolean isHidden() :判断是否隐藏
     */

    /*
    创建硬盘中对应的文件或文件目录
    public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false
    public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。
    public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建。

    删除磁盘中的文件或文件目录
    public boolean delete(): 删除文件或者文件夹
    删除注意事项:
    Java中的删除不走回收站。
     */
}
package com.fq.lz.Day21.Day20_3_IO;

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

/**
 * @author GoodTime0313
 * @version 1.0
 * @Description File类表示文件
 * @date 2021/3/25 14:39
 */
public class FileDemo1 {
    public static void main(String[] args) throws IOException {
        //File表示硬盘中的一个文件
        //1.创建
        //1.1 调用构造方法创建File对象(文件可以存在也可以不存在)
        File file = new File("file_1.txt");
        //1.2 如果文件不存在,创建
        if (!file.exists()) {
            boolean newFile = file.createNewFile();
            System.out.println("创建的结果"+newFile);
        }else{
            System.out.println("文件已存在");
        }
        System.out.println("-------------------");
        //2.删除
        //2.1 直接删除
        //boolean delete = file.delete();
        //System.out.println("删除的结果:" + delete);
        //2.2 JVM退出时删除 void
       // file.deleteOnExit();
        System.out.println("-------------------");
        //3.获取
        //3.1 获取相对路径
        System.out.println(file.getPath());
        //3.2 获取相对路径
        System.out.println(file.getAbsolutePath());
        //3.3 获取名称
        System.out.println(file.getName());
        //3.4 获取文件大小
        System.out.println(file.length());
        //3.5 获取最后一次修改的时间
        System.out.println(file.lastModified());

        System.out.println("-------------------");
        //4.判断
        //4.1 是不是文件
        System.out.println(file.isFile());
        //4.2 是不是隐藏的
        System.out.println(file.isHidden());
        //4.3 是不是可读
        System.out.println(file.canRead());
        //4.4 是不是可写
        System.out.println(file.canWrite());

        //5. 重命名
        System.out.println(file.renameTo(new File("file_2.txt")));
        //可以实现剪切功能 改位置,改文件名
        //System.out.println(file.renameTo(new File("d:/file_2.txt")));

    }
}

/**
 * @author GoodTime0313
 * @version 1.0
 * @Description File表示硬盘中的目录(文件夹)
 * @date 2021/3/25 15:10
 */
public class FileDemo2 {
    public static void main(String[] args) {
        //1.创建
        //1.1 创建File对象,并指定一个目录
        File file = new File("c.txt");
        System.out.println(file.toString());
        //1.2 创建目录
        if (!file.exists()) {
            //单级目录
            file.mkdir();
            //多级目录
            file.mkdirs();
        } else {
            System.out.println("目录已经存在");
        }

        //2.删除
        //2.1 直接删除 只能删除最深层的,必须是空目录
        System.out.println(file.delete());
        //2.2  JVM来删除
        // file.deleteOnExit();

        //3.获取
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        //最里层的目录
        System.out.println(file.getName());

        //4.判断
        //4.1 是不是文件夹
        System.out.println(file.isFile());
        System.out.println(file.isHidden());
        System.out.println(file.isAbsolute());

        //5.重命名:只是该最底层的文件夹,父目录不存在为false
        System.out.println(file.renameTo(new File("d.txt")));

        //6.遍历目录
        //6.1 获取当前目录下的文件夹和文件夹名
        String[] list1 = file.list();
        for (String s : list1) {
            System.out.println(s);
        }
        //6.2 按条件过滤文件
        String[] list = file.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                //return true 符合要求  false 不符合要求
                if (name.endsWith(".jpg")) {
                    return true;
                }
                return false;
            }
        });

        //6,3 获取当前目录下的文件夹和文件夹名 (file数组)
        File[] files = file.listFiles();
        for (File file1 : files) {
            System.out.println(file1.getName());
        }
        //6.4 获取当前目录下的文件
        File[] files1 = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                if (pathname.getName().endsWith(".jpg")) {
                    return true;
                }
                return false;
            }
        });
    }
}

案例1:递归遍历文件夹

/**
 * @author GoodTime0313
 * @version 1.0
 * @Description 递归遍历文件夹
 * @date 2021/3/25 16:11
 */
public class FileDemo1 {
    public static void main(String[] args) {
        File file = new File("E:\\百度网盘文件\\a");
        listDir(file,0);
    }

    public static void listDir(File file,int level) {
        File[] files = file.listFiles();
        System.out.println(getSeparator(level)+file.getName());
        level++;
        if (files != null && files.length > 0) {
            for (File file1 : files) {
                if (file1.isDirectory()) {
                    listDir(file1,level);
                } else {
                    System.out.println(getSeparator(level)+file1.getName());
                }
            }
        }
    }

    public static String getSeparator(int level){
        if (level == 0){
            return "";
        }
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < level; i++) {
            builder.append("___");
        }
        return builder.toString();
    }
}

案例2:递归删除文件夹

/**
 * @author GoodTime0313
 * @version 1.0
 * @Description 递归删除文件夹
 * @date 2021/3/25 16:31
 */
public class FileDemo2 {
    public static void main(String[] args) {
        File file = new File("E:\\百度网盘文件\\a");
        listDeleteDir(file);
    }

    public static void listDeleteDir(File file) {
        File[] files = file.listFiles();
        if (files != null && files.length > 0) {
            for (File file1 : files) {
                if (file1.isDirectory()) {
                    listDeleteDir(file1);
                } else {
                    file1.delete();
                }
            }
        }
        file.delete();
    }
}

File类的限制,只能看见文件或文件夹的大小,名字等,但是里面的内容控制不了。


付费资源您未登录,请先

Click here to view the copyright notice of this site(点击此处查看本站版权声明)
0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!