Code Ease Code Ease
  • 个人博客网站 (opens new window)
  • 好用的工具网站 (opens new window)
  • Java核心基础
  • 框架的艺术
  • 分布式与微服务
  • 开发经验大全
  • 设计模式
  • 版本新特性
数据库系列
大数据+AI
  • xxl-job
运维与Linux
  • 基于SpringBoot和BootStrap的论坛网址
  • 基于VuePress的个人博客网站
  • 基于SpringBoot开发的小功能
  • 做一个自己的IDEA插件
程序人生
关于我
  • 分类
  • 标签
  • 归档

神秘的鱼仔

你会累是因为你在走上坡路
  • 个人博客网站 (opens new window)
  • 好用的工具网站 (opens new window)
  • Java核心基础
  • 框架的艺术
  • 分布式与微服务
  • 开发经验大全
  • 设计模式
  • 版本新特性
数据库系列
大数据+AI
  • xxl-job
运维与Linux
  • 基于SpringBoot和BootStrap的论坛网址
  • 基于VuePress的个人博客网站
  • 基于SpringBoot开发的小功能
  • 做一个自己的IDEA插件
程序人生
关于我
  • 分类
  • 标签
  • 归档
服务器
  • Java核心基础

    • 基础篇

      • Java常用关键字
      • 写了那么久的String字符串,你可能根本不懂它!
      • 详解Java中的BIO、NIO、AIO
      • 一篇文章带你了解cloneable接口、浅拷贝、深拷贝
      • 谈一谈session和cookie的区别,以及session的实现机制
      • 什么是接口的幂等性,如何实现接口幂等性?一文搞定
      • Java16都快上线了,你该不会连Java8的特性都不会用吧?
      • Java中的拦截器和过滤器有什么区别
      • 你能保证你的代码没有异常吗?
      • 时间类有多复杂,JDK竟设计了三版
      • JavaIO的整体结构以及File类的使用
        • 一、概述
        • 二、JavaIO的整体结构
        • 三、File类
          • 3.1、FIle类对文件的主要操作:
          • 3.2、File类对目录的主要操作
          • 3.3、对文件信息的操作
          • 3.4、获取文件目录信息
        • 四、结论
      • javaIO之字节流与字符流
    • 集合类

    • JVM虚拟机

    • Java并发

  • 框架的艺术

  • 分布式与微服务

  • 开发经验大全

  • 版本新特性

  • Java
  • Java核心基础
  • 基础篇
CodeEase
2023-11-11
目录

JavaIO的整体结构以及File类的使用

作者:鱼仔
博客首页: codeease.top (opens new window)
公众号:Java鱼仔

# 一、概述

IO即输入输出系统,java的IO总体可以分为字符流(Reader、Writer)和字节流(InputStream、OutputStream)。

字节流直接对二进制数据进行操作;字符流在操作的时候使用了缓冲区(即内存)。

字节流一般用来对媒体文件操作,比如图片;字符流一般可用来操作文本文件,如txt文件。

掌握javaIO需要掌握一个类(File)、一个接口(Serializable)和四个抽象类(Reader、Writer、InputStream、OutputStream)

# 二、JavaIO的整体结构

10-1.png

# 三、File类

File类是在整个java.io包中里面唯一一个与文件本身有关的操作类,通过查看官方文档Java PlatForm SE 8,可以看到File类一共提供了四种构造方法:

File(File parent, String child) 
File(String pathname)  
File(String parent, String child)  
File(URI uri) 
1
2
3
4

上面四种构造方法包含了所有可能出现的路径格式

# 3.1、FIle类对文件的主要操作:

File类对文件的主要操作是以下几个:

boolean createNewFile()  创建文件
boolean delete()  删除文件
boolean exists()  判断文件是否存在
1
2
3

通过代码简单尝试:

public static void main(String[] args) throws IOException {
    File file=new File("F://testFile.txt");
    if (file.exists()){
        file.delete();
    }else {
        file.createNewFile();
    }
}
1
2
3
4
5
6
7
8

注意两个问题:

1.删除和新建文件是存在延迟的,并非事实。

2.不同的操作系统之间路径分隔符不同,因此可以使用File.separator代替分隔符

File file=new File("F:"+File.separator+"testFile.txt");
1

# 3.2、File类对目录的主要操作

boolean mkdir() 创建单级目录
boolean mkdirs() 创建多级目录  
String getParent() 以String方式获取父目录
File getParentFile()  以File方式获取父目录
1
2
3
4

当我们需要创建一个包含多级目录的文件时,就可以使用上述的方法

public static void main(String[] args) throws IOException {
    File file=new File("F:"+File.separator+"二级目录"+File.separator+"testFile.txt");
    if (!file.getParentFile().exists()){
        file.getParentFile().mkdirs();
    }
    file.createNewFile();
}
1
2
3
4
5
6
7

# 3.3、对文件信息的操作

File类提供了许多对文件信息的操作:

boolean canExecute() 判断文件是否可执行
boolean canRead()  判断文件是否可读
boolean canWrite()  判断文件是否可写
String getAbsolutePath()  获取文件绝对路径
String getName() 获取文件或目录的名称
boolean isDirectory() 判断是否是目录
boolean isFile()  判断是否是文件
long lastModified()  最后修改时间
long length()   文件的大小
1
2
3
4
5
6
7
8
9

# 3.4、获取文件目录信息

String[] list()  返回所有子目录的信息
File[] listFiles()  返回完整的路径信息
1
2

通过代码和结果展示:

public static void main(String[] args) throws IOException {
    File file=new File("F:"+File.separator);
    System.out.println(Arrays.toString(file.list()));
    System.out.println(Arrays.toString(file.listFiles()));
}
1
2
3
4
5

通过递归的方式,我们可以找到某个路径下的所有完整地址

public static void main(String[] args) throws IOException {
    File file=new File("F:"+File.separator);
    listDIR(file);
}
public static void listDIR(File file){
    if (file.isDirectory()){
        File[] result=file.listFiles();
        if (result!=null){
            for (int i = 0; i < result.length; i++) {
                listDIR(result[i]);
            }
        }
        System.out.println(file);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 四、结论

File类的操作只针对于文件的信息,无法对文件中的内容进行操作,而想要操作文件的内容就需要使用字节流和字符流.

上次更新: 2025/04/29, 17:22:06
时间类有多复杂,JDK竟设计了三版
javaIO之字节流与字符流

← 时间类有多复杂,JDK竟设计了三版 javaIO之字节流与字符流→

最近更新
01
AI大模型部署指南
02-18
02
半个月了,DeepSeek为什么还是服务不可用
02-13
03
Python3.9及3.10安装文档
01-23
更多文章>
Theme by Vdoing | Copyright © 2023-2025 备案图标 浙公网安备33021202002405 | 浙ICP备2023040452号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式