Java基础IO篇--File类

简介: Java基础IO篇--File类

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

前言

在Java的核心库java.io提供了全面的IO接口。主要用于系统文件读写、标准设备输出等功能。Java中IO是以流为基础进行输入输出的,通过数据流和对象的序列化将Java的所有对象数据串行化写入输出流,或者从输入流读入。Java基础IO篇系列文章让我们先从学习File类开始吧。

一、概述

java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作

二、File类的构造方法

  • public File(String pathname): 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。
  • public File(String parent, String child): 从父路径名字符串和子路径名字符串创建新的 File实例。
  • public File(File parent, String child): 从父抽象路径名和子路径名字符串创建新的File实例。
public class Test {
    public static void main(String[] args) {
       // public File(String pathname) : // 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。
       File file = new File("D:/io/a.txt");  // pathname的写法 D:/io 等价于 D:\io
       System.out.println("file:" + file);  // D:\io\a.txt\
       // public File(String parent, String child) : // 从父路径名字符串和子路径名字符串创建新的 File实例。\
       File file1 = new File("D:/io", "a.txt");
       System.out.println("file1:" + file1); // D:\io\a.txt\
       // public File(File parent, String child) :// 从父抽象路径名和子路径名字符串创建新的File实例。
       File file2 = new File("D:/io");
       File file3 = new File(file2, "a.txt");
       System.out.println("file3:" + file3); // D:\io\a.txt
    }
}

注意:一个File对象代表硬盘中实际存在的一个文件或者目录,给定参数位置的路径(文件或者目录的名称), 无论该路径下是否存在文件或者目录,都不影响File对象的创建。

三、File类获取功能的方法

  • public String getAbsolutePath(): 返回此File的绝对路径名字符串。
  • public String getPath() : 将此File转换为路径名字符串。
  • public String getName() : 返回由此File表示的文件或目录的名称。
  • public long length(): 返回由此File表示的文件的长度。【File对象表示目录,则返回值未指定。】
public class Test {
    public static void main(String[] args) {
       // 创建File对象
       //File file = new File("D:/io/a.txt"); // 绝对路径
       File file = new File("day10_io/src/a.txt"); // 相对路径(参照当前项目)
       // public String getAbsolutePath() : // 返回此File的绝对路径名字符串。
       //System.out.println(file.getAbsolutePath()); // D:\io\a.txt\
       System.out.println(file.getAbsolutePath()); // D:\Develop\workspace\javaee\itheima3\day10_io\src\a.txt
       // public String getPath() : // 将此File转换为路径名字符串。
       //System.out.println(file.getPath()); // D:\io\a.txt
       System.out.println(file.getPath()); // day10_io/src/a.txt
       // public String getName() :// 返回由此File表示的文件或目录的名称。
       //System.out.println(file.getName()); // a.txt
       System.out.println(file.getName()); //
       // public long length() :// 返回由此File表示的文件的长度。【File对象表示目录,则返回值未指定。】
       //System.out.println(file.length()); // 6 【a.txt文件中有数据: abcdef】
       System.out.println(file.length());
    }
}

绝对路径和相对路径

  • 绝对路径:【带有盘符!】 从盘符开始的路径,这是一个完整的路径。
    例如:D:\Develop\workspace\javaee\itheima3\day10_io\src\a.txt
  • 相对路径:【不带盘符!】 相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。
    例如:day10_io\src\a.txt   // 相对于当前项目!

四、File类判断功能的方法

  • public boolean exists(): 此File表示的文件或目录是否实际存在。
  • public boolean isDirectory(): 此File表示的是否为目录。
  • public boolean isFile(): 此File表示的是否为文件。
public class Test {
    public static void main(String[] args) {
       // 创建File对象
       File file1 = new File("D:/io/a.txt");  // a.txt是一个文件
       File file2 = new File("day10_io/src/a.txt"); // 不存在
       File file3 = new File("D:/io/c.txt"); // c.txt是一个目录
       // public boolean exists() : // 此File表示的文件或目录是否实际存在。
       System.out.println(file1.exists()); // true
       System.out.println(file2.exists()); // false
       System.out.println("=================");
       // public boolean isDirectory() :// 此File表示的是否为目录。
       System.out.println(file1.isDirectory()); // false
       System.out.println(file2.isDirectory()); // false
       System.out.println(file3.isDirectory()); // true
       System.out.println("=================");
       // public boolean isFile() :// 此File表示的是否为文件。
       System.out.println(file1.isFile()); // true
       System.out.println(file2.isFile()); // false
       System.out.println(file3.isFile()); // false
    }
}

五、File类创建删除功能的方法

  • public boolean createNewFile(): 当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
  • public boolean delete(): 删除由此File表示的文件或目录。如果File表示目录,则目录必须为空才能删除
  • public boolean mkdir(): 创建由此File表示的目录。
  • public boolean mkdirs(): 创建由此File表示的目录,包括任何必需但不存在的父目录。
public class Test {
    public static void main(String[] args) throws IOException {
        // 创建File对象
        //File file = new File("D:/io/b.txt"); // b.txt文件不存在的!
        //File file = new File("D:/io/xxx/b.txt"); // b.txt文件不存在的!
        //File file = new File("D:/io/b"); // b目录里面没有内容
        //File file = new File("D:/io/xxx"); // xxx目录里面有内容
        File file = new File("D:/io/a.txt"); // xxx目录里面有内容
        // 创建文件
        //file.createNewFile(); // 创建b.txt文件!
        // 创建一个目录
        //file.mkdir(); // 父目录io存在,创建b.txt目录成功!
        // 当父目录不存在的情况下,可以调用下面方法!
        //file.mkdirs(); // 先创建不存在的那个父目录,然后在父目录下面创建指定的子目录
        // 可以删除目录(目录里面没有文件),目录里面有内容就删除不了!
        file.delete();
    }
}

六、File类目录的遍历

  • public String[] list(): 返回一个String数组,表示该File目录中的所有子文件或目录。
  • public File[] listFiles(): 返回一个File数组,表示该File目录中的所有的子文件或目录。注意:listFiles方法的File对象,表示的必须是实际存在的目录,否则返回null,无法进行遍历
public class Test {
    public static void main(String[] args) throws IOException {
        // 创建File对象
        File file = new File("D:/io");  // io目录下面有3个内容(a.txt文件<abcdef> c.txt目录 xxx目录)
        // 获得file对象里面所有的子目录以及文件的字符串形式数据 【使用不多!】
        /*String[] list = file.list();
        for (String s : list) {
            System.out.println(s);
        }*/
        // 获得file对象里面所有的子目录以及文件的File对象形式数据
        File[] files = file.listFiles();
        for (File file1 : files) {
            if (file1.isDirectory()) {
                // 继续获得file1里面的文件或者目录
                //File[] files1 = file1.listFiles();
                // 获得目录的名称
                System.out.println(file1.getName());
            } else if (file1.isFile()) {
                // 获得文件里面内容的长度
                System.out.println(file1.length());
            }
        }
    }
}

后记

在实际的开发中,前辈们已经将这些基础的File类文件操作的方法封装成具体的工具类,我们在实际开发中只需引入相关的jar包就可以使用工具类操作文件。等介绍完Java基础IO的知识后,我会再写一篇专门介绍IO操作的工具包的使用,敬请期待!

喜欢我的文章的朋友点点喜欢、收藏,也欢迎朋友们评论区留下你的意见和建议,恕毅在此拜谢!


相关文章
|
3天前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
17 1
|
3天前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
12 0
java基础(13)String类
|
14天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
13天前
|
存储 安全 Java
Java——String类详解
String 是 Java 中的一个类,用于表示字符串,属于引用数据类型。字符串可以通过多种方式定义,如直接赋值、创建对象、传入 char 或 byte 类型数组。直接赋值会将字符串存储在串池中,复用相同的字符串以节省内存。String 类提供了丰富的方法,如比较(equals() 和 compareTo())、查找(charAt() 和 indexOf())、转换(valueOf() 和 format())、拆分(split())和截取(substring())。此外,还介绍了 StringBuilder 和 StringJoiner 类,前者用于高效拼接字符串,后者用于按指定格式拼接字符串
13 1
Java——String类详解
|
4天前
|
存储 Java
Java编程中的对象和类
【8月更文挑战第55天】在Java的世界中,“对象”与“类”是构建一切的基础。就像乐高积木一样,类定义了形状和结构,而对象则是根据这些设计拼装出来的具体作品。本篇文章将通过一个简单的例子,展示如何从零开始创建一个类,并利用它来制作我们的第一个Java对象。准备好让你的编程之旅起飞了吗?让我们一起来探索这个神奇的过程!
24 10
|
8天前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
|
1天前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
3天前
|
Java
java的class类
java的class类
18 5
|
1天前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
10天前
|
Java 开发者
Java Character 类详解
Java中的`Character`类是`java.lang`包的一部分,用于将基本类型`char`封装为对象,并提供了丰富的静态方法来处理字符,如类型判断、大小写转换等。