0
点赞
收藏
分享

微信扫一扫

java疯狂讲义阅读学习java IO流(一)File类的学习与实操

像小强一样活着 2022-02-22 阅读 46

java讲义阅读学习File类

前言: 临近开学,面临考研学习等诸多的压力,通过java讲义图书,重新学习java io流中核心的知识形成自己的体系。从更深的层次上来说,以后学习的时间日益的缩减和紧张。通过读书学习的方式更能够培养自学的能力,拜托对教程的过渡依赖。在下学期中也可以更好地提高学习的效率。提高总结能力吧。

File类

File介绍

File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成。值得指出的是,不管是文件还是目录都是使用File来操作的,File能新建、删除、重命名文件和目录,File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。

在这里插入图片描述

通过源码结构图的分析可以得知File类中没有默认的构造方法,必须通过URL指定File所创建的文件目录。

File类可以使用文件路径字符串来创建File实例,该文件路径字符串既可以是绝对路径,也可以是相对路径。在默认情况下,系统总是依据用户的工作路径来解释相对路径。

一旦创建了File对象后,就可以调用File对象的方法来访问,File类提供了很多方法来操作文件和目录,下面列出一些比较常用的方法。

访问文件名相关的方法

一般工程上把pojo的get/set方法后面部分名称称为property,实例变量叫attribute

Java类里的变量都可以叫field

在这里插入图片描述
下面是源码上面字段的对应部分。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面介绍的是访问文件对应的方法

  • String getName():返回此File对象所表示的文件名或路径名(如果是路径,则返回最后一级子路径名)

  • String getPath():返回此File对象所对应的路径名。

  • File getAbsoluteFile():返回此File对象所对应的绝对路径所对应的File对象。

  • String getAbsolutePath():返回此File对象所对应的绝对路径名。

  • String getParent():返回此File对象所对应目录(最后一级子目录)的父目录名。

  • boolean renameTo(File newName):重命名此File对象所对应的文件或目录,如果重命名成功,则返回true;否则返回false。

在这里插入图片描述

这些访问文件相关的方法,在File类的源码中都有对应。如上图所示。

在这里插入图片描述

文件检测相关的方法

  1. boolean exists():判断File对象所对应的文件或目录是否存在
  2. boolean canWrite():判断File对象所对应的文件和目录是否可写
  3. boolean canRead():判断File对象所对应的文件和目录是否可读
  4. boolean isFile():判断File对象所对应的是否是文件,而不是目录。
  5. boolean isDirectory():判断File对象所对应的是否是目录,而不是文件。
  6. boolean isAbsolute():判断File对象所对应的文件或目录是否是绝对路径

总结:文件检测的相关的方法总结为:判断文件存在,判断文件是否可读写,判断文件的类型
在这里插入图片描述

上图中的方法对应了文件检测中常用的一些方法。

文件操作相关的方法

  • boolean createNewFile():当此File对象所对应的文件不存在时,该方法将新建一个该File对象所指定的新文件,如果创建成功则返回true;否则返回false。
  • boolean delete():删除File对象所对应的文件或路径。
  • static File createTempFile(String prefix, String
    suffix):在默认的临时文件目录中创建一个临时的空文件,使用给定前缀、系统生成的随机数和给定后缀作为文件名。这是一个静态方法,可以直接通过File类来调用。prefix参数必须至少是3个字节长。建议前缀使用一个短的、有意义的字符串,比如"hjb"或"mail"。suffix参数可以为null,在这种情况下,将使用默认的后缀“.tmp”。

文件相关的操作方法主要涉及到了文件的创建与删除,可以和目录的相关方法对应学习

目录操作相关的方法

  • boolean
    mkdir():试图创建一个File对象所对应的目录,如果创建成功,则返回true;否则返回false。调用该方法时File对象必须对应一个路径,而不是一个文件。

  • String[] list():列出File对象的所有子文件名和路径名,返回String数组。

  • File[] listFiles():列出File对象的所有子文件和路径,返回File数组。

  • static File[] listRoots():列出系统所有的根路径。这是一个静态方法,可以直接通过File类来调用
    在这里插入图片描述
    这些所写过的方法属于File类中的常用方法。

File类的实际操作

实例一:以当前的路径创建一个File对象并获取文件信息

package com.dzu.cn;

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

/**
 * @Author ChenRuXu
 * @Date 2022/2/21 20:47
 * @Version 1.0
 */
public class TestFile {
    public static void main(String[] args) throws IOException {
        File file = new File("file");
        System.out.println(file.getName());
        //获取绝对路径
        System.out.println(file.getAbsolutePath());
        //获取相对路径的父路径
        System.out.println(file.getParent());
        //获取上一级路径
        System.out.println(file.getAbsoluteFile().getParent());
    }
}

实例二:创建文件

方式一:根据文件路径来创建文件

package com.dzu.cn;

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

/**
 * @Author ChenRuXu
 * @Date 2022/2/22 17:34
 * @Version 1.0
 */
public class CreateFile {
    public static void main(String[] args) {
        CreateFile createFile = new CreateFile();
        createFile.create01();
    }

    //根据文件的路径创建文件一
    public void create01(){
        String filePath ="e:\\news1.txt";
        File file = new File(filePath);
        try {
            file.createNewFile();
            System.out.println("文件创建成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这里插入图片描述
方式二:父文件加子路径构建File

//根据父文件加子路径构建File(File partent,String child)
    public void create02()  {
        //父文件内存中保存
        File partentFile = new File("e:\\");
        String filename = "news2.txt";
        File file = new File(partentFile,filename);
        try {
            file.createNewFile();
            System.out.println("创建成功");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

在这里插入图片描述
方式三:父路径加子路径创建

//创建方式三
    public void create03(){
        String partentpath = "e:\\";
        String fileName = "news3.txt";
        File file = new File(partentpath,fileName);
        try {
            file.createNewFile();
            System.out.println("创建文件3成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

在这里插入图片描述
根据三种创建文件的方式对应了File类中的三个构造器。
在这里插入图片描述

实例三:获取文件的相关信息

package com.dzu.cn;

import java.io.File;

/**
 * 获取文件信息
 * @Author ChenRuXu
 * @Date 2022/2/22 18:18
 * @Version 1.0
 */
public class FileInformation {
    public static void main(String[] args) {
        //创建文件对象
        File file = new File("e:\\news1.txt");
        //调用相关的方法获取文件信息(文件名)
        System.out.println(file.getName());
        //获取文件父目录
        System.out.println(file.getParent());
        //获取文件大小按照字节(一个汉字三个字节)
        System.out.println(file.length());
        //判断文件是否存在
        System.out.println(file.exists());
        //判断是否是一个文件呢
        System.out.println(file.isFile());
        //判断文件是否是一个目录
        System.out.println(file.isDirectory());
        
    }
}

实例四:目录相关操作

创建一级目录,创建多级目录,删除目录

操作一:判断文件是否存在存在则删除

package com.dzu.cn;

import java.io.File;

/**
 * 目录相关操作
 * @Author ChenRuXu
 * @Date 2022/2/22 18:34
 * @Version 1.0
 */
public class Directory {
    public static void main(String[] args) {
        Directory directory = new Directory();
        directory.m1();
    }

    /**
     * 删除文件
     */
    public void m1(){
        String filepath = "e:\\news1.txt";
        File file = new File(filepath);
        if (file.exists()){
            if (file.delete()){
                System.out.println("文件删除成功");
            }else {
                System.out.println("文件删除失败");
            }
        }else {
            System.out.println("文件不存在");
        }
    }
}

在这里插入图片描述
操作二:在D盘下新建一个demo的文件夹目录,在该目录的下面随意健几个文件进行测试

经过测试可以发现文件中存在其他的东西时删除会失败,里面为空则会删除成功
在这里插入图片描述

/**
     * 删除文件夹
     */
    public void m2(){
        String filepath ="d:\\demo";
        File file = new File(filepath);
        if (file.exists()){
            if (file.delete()){
                System.out.println("文件夹删除成功");
            }else {
                System.out.println("文件夹删除失败");
            }
        }else {
            System.out.println("文件夹不存在");
        }
    }

操作三:创建多级目录mkdirs()

在这里插入图片描述

public void m3(){
        String filepath ="d:\\demo\\aa\\bb";
        File file = new File(filepath);
        if (file.exists()){
            System.out.println("文件存在");
        }else {
            if (file.mkdirs()){
                System.out.println("多级目录创建成功");
            }else {
                System.out.println("多级目录创建失败");
            }
        }

    }

总结

举报

相关推荐

0 条评论