Java之IO流详解(一)——File类

news2025/7/14 11:20:37

一、File类创建文件

方法说明
public boolean createNewFile()当具有该名称的文件不存在时,创建一个由该抽象路径命名的新空文件
public boolean mkdir()创建由此抽象路径命名的目录
public boolean mkdirs()创建由此抽象路径命名的目录,包括任何必须但不存在的父目录

eg:

public static void main(String[] args) throws IOException {
    //当具有该名称的文件不存在时,创建一个由该抽象路径命名的新空文件(创建文件)
    //如果父目录不存在,则会创建不成功
    File file1 = new File("C:\\Users\\Administrator\\Desktop\\test\\test01\\test01.java");
    System.out.println(file1.createNewFile());
    //创建由此抽象路径命名的目录(创建文件夹)
    //如果父目录不存在,则会创建不成功
    File file2 = new File("C:\\Users\\Administrator\\Desktop\\test\\test02");
    System.out.println(file2.mkdir());
    //创建由此抽象路径命名的目录,包括任何必须但不存在的父目录(创建目录,没有指定的父目录也会一起创建)
    File file3 = new File("C:\\Users\\Administrator\\Desktop\\test\\test03\\qize");
    System.out.println(file3.mkdirs());
}

二、File类常用判断方法

方法说明
boolean isDirectory()判断是否是文件夹
boolean isFile()判断是否是文件
boolean exists()判断文件是否存在

eg:

public static void main(String[] args) {
    File file = new File("C:\\Users\\Administrator\\Desktop\\test\\test01\\test01.java");
    if(file.isDirectory()){
        System.out.println("是文件夹");
    }else{
        System.out.println("不是文件夹");
    }
    if(file.isFile()){
        System.out.println("是文件");
    }else{
        System.out.println("不是文件");
    }
    if(file.exists()){
        System.out.println("文件是存在的");
    }else{
        System.out.println("文件不存在");
    }
}

三、File类常用获取方法

  1. File类常用获取方法
方法说明
String getAbsolutePath()获取绝对路径
String getPath()获取抽象路径名转化路径名字符串
String getName()获取文件或文件夹的名称
String[] list()获取目录下所有内容,返回字符串数组
File[] getlistFiles()获取目录下的所有内容,返回File对象数组

eg:

public static void main(String[] args) {
    File file = new File("C:\\Users\\Administrator\\Desktop\\test\\test01\\test01.java");
    //获取绝对路径
    System.out.println(file.getAbsolutePath());
    //获取相对路径
    System.out.println(file.getPath());
    //获取文件或文件夹的名称
    System.out.println(file.getName());
    File file2 = new File("C:\\Users\\Administrator\\Desktop\\test\\test01");
    //获取目录下所有内容,返回字符串数组
    String[] list = file2.list();
    for(String s:list){
        System.out.println(s);
    }
    //获取目录下的所有内容,返回File对象数组
    File[] files = file2.listFiles();
    for(File f:files){
        System.out.println(f);
    }
}
  1. 绝对路径与相对路径
    (1)绝对路径是指文件在硬盘上真正存在的路径。
    (2)相对路径是java工程中要访问的文件相对于当前文件的位置。
    eg:
public static void main(String[] args) throws IOException {
    File file = new File("Test05.java");
    System.out.println(file.createNewFile());
    System.out.println(file.getAbsolutePath());
    System.out.println(file.getPath());
}

在这里插入图片描述

四、File类删除操作

方法说明
boolean delete()如果删除路径是一个文件则可以直接删除。如果删除路径是一个目录,不能够直接删除目录。需要先删除该目录下的所有内容,最后才能删除目录。

eg:

public static void main(String[] args) {
    File file1 = new File("C:\\Users\\Administrator\\Desktop\\test\\test01");
    //文件夹无法直接删除,因为该文件夹里还有文件,需要先删除该目录下的全部内容,然后才能删除该目录
    System.out.println(file1.delete());
    File file2 = new File("C:\\Users\\Administrator\\Desktop\\test\\test01\\test03.java");
    //文件test03.java可以直接删除
    System.out.println(file2.delete());
}

五、遍历目录

采用递归算法遍历目录
eg:

public class Test06 {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\Administrator\\Desktop\\test");
        getAllFile(file);
    }

    /**
     * 使用递归算法遍历目录
     * @param file
     * @return
     */
    public static void getAllFile(File file){
        //1、根据listFiles()方法获取到目录下的file集合
        File[] files = file.listFiles();
        //2、files数组如果为null,则结束
        if(files == null){
            return;
        }
        //3、遍历该目录中所有内容
        for(File f:files){
            System.out.println(f.getAbsolutePath());
            //4、如果为目录,则采用递归算法调用本身
            if(f.isDirectory()){
                getAllFile(f);
            }
        }
    }
}

六、删除目录

采用递归算法删除目录

eg:

public class Test07 {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\Administrator\\Desktop\\test\\test03\\qize");
        deleteFile(file);
    }

    /**
     * 使用递归算法遍历目录
     * @param file
     * @return
     */
    public static void deleteFile(File file){
        //1、根据listFiles()方法获取到目录下的file集合
        File[] files = file.listFiles();
        //2、files数组如果为null,则结束
        if(files == null){
            return;
        }
        //3、遍历该目录中所有内容
        for(File f:files){
            //4、如果为目录,则采用递归算法调用本身
            if(f.isDirectory()){
                deleteFile(f);
            }else {
                System.out.println(f.getAbsolutePath());
                //是文件则直接删除
                f.delete();
            }
        }
        //遍历结束后则代表文件已经全部删除了,这时可以直接删除文件夹了
        file.delete();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/38185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go常见错误第15篇:interface使用的常见错误和最佳实践

前言 这是Go常见错误系列的第15篇:interface使用的常见错误和最佳实践。 素材来源于Go布道者,现Docker公司资深工程师Teiva Harsanyi。 本文涉及的源代码全部开源在:Go常见错误源代码,欢迎大家关注公众号,及时获取本…

加载配置文件内容利用反射动态创建对象和调用方法(开闭原则的体现)

反射的应用:根据配置文件来创建对象和调用方法 需求:1,根据配置文件re.properties 指定的信息,创建对象并调用方法 classfullpathsrc.com.liu.Cat methodhi 即通过外部文件配置,在不修改源码的情况下,来控…

GAN详解

前言 GAN是当今作为火热的生成式算法,由Ian Goodfellow,Yoshua Bengio等人在2014年提出的,Yan LeCun表示道GAN是“adversarial training is the coolest thing since sliced bread”。它使用两个神经网络,将一个神经网络与另一个…

ArcGIS中ArcMap栅格图层0值设置为NoData值的简便方法

本文介绍在ArcMap软件中,将栅格图层中的0值或其他指定数值作为NoData值的方法。 在处理栅格图像时,有时会发现如下图所示的情况——我们对某一个区域的栅格数据进行分类着色后,其周边区域(即下图中浅蓝色的区域)原本应…

C语言学习记录(十五)C预处理器和C库

文章目录一、C预处理器1.1 翻译程序1.2 明示常量:#define1.3 在#define中使用参数1.4 文件包含:#include1.5 其他指令1.5.1 #undef指令1.5.2 从C预处理角度看已定义1.5.3 条件编译1.5.3.1 #ifdef、#else和#endif指令1.5.3.2 #ifndef1.5.3.3 #if和elif指令…

Gof23-创建型-工厂-单例-抽象工厂-建造-原型以及UML的绘制

创建型的设计模式工厂模式单例模式抽象工厂建造者模式原型模式UML图形的绘制工厂模式 工厂模式 Factory Pattern 适用的场景:统一的接口作为统一的零件,实现类作为零件的组合,将实例产品类的生产交给工厂,用户只需要面对工程提取…

XML的创建和读取

rapidxml是一个快速的xml库,由C模板实现的高效率xml解析库,同时也是boost库的property_tree的内置解析库。 当使用rapidxml时,只需要把rapidxml.hpp 、 rapidxml_print.hpp 和 rapidxml_utils.hpp 三个文件拷贝到你的工程目录下,就…

Pytorch中KL loss

1. 概念 KL散度可以用来衡量两个概率分布之间的相似性,两个概率分布越相近,KL散度越小。 上述公式表示P为真实事件的概率分布,Q为理论拟合出来的该事件的概率分布。D(P||Q)(P拟合Q)和D(Q||P)(Q拟合P&…

ajax之Content-Type示例

参考资料: Content-Type详解【SpringBoot】SpringBoot接收请求的n种姿势 目录前期准备0. Content-Type概念解释1. application/x-www-form-urlencoded1.1 form表单示例1.2 jQuery的ajax示例2. application/json2.1 指定contentType为json,不使用RequestBody接收2.2 不指定cont…

01 OSI七层网络排查 troubleshooting 思路及对应工具

文章目录1 .前言2. OSI 的七层模型,和 TCP/IP 的四层 / 五层模型区别2.1 网络专业术语2.2 TLS 解释2.3 什么是TCP 流?3. 网络各层排查工具3.1 应用层3.1.1 浏览器的开发者工具3.1.1.1 找到有问题的服务端IP3.1.1.2 辅助排查网页慢的问题3.1.1.3 解决失效…

嵌入式数据库sqlite3

一、数据库 数据库的基本概念 常用的数据库 大型数据库 Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率名列前茅。 IBM 的DB2是第一个具备网上功能的多媒体关系数据库管理系统,支…

bootstrap学习(四)

bootstrap中图片、按钮、表单 按钮: 不加样式的按钮: 在bootstrap中a标签也可以生成按钮: 默认按钮尺寸可以不加,它是自动显示默认尺寸 加btn-block:class 图片: 表单: 垂直表单:…

【语音识别】MFCC+VAD端点检测智能语音门禁系统【含GUI Matlab源码 451期】

⛄一、MFCC简介 1 引言 语音识别是一种模式识别, 就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的技术。语音识别技术主要包括特征提取技术、模式匹配准则及模型训练技术3个方面。目前一些语音识别系统的适应性比较差, 主要体现在对环境依赖性强, 因此要提高…

[mysql] 深入分析MySQL版本控制MVCC规则--实测 (mysql 8.0 innodb引擎)

背景:基于之前的一篇文章 可重复读:可重复读隔离级别的实现是每个事务在打开时都会生成一个一致的视图。 当其他事务提交时,不会影响当前事务中的数据。 为了保证这一点,MySQL是通过多版本控制机制MVCC来实现的; 我们亲…

Go语言面试题合集(2022)

基础语法 Go 支持默认参数或可选参数吗? 不支持。但是可以利用结构体参数,或者…传入参数切片数组。 // 这个函数可以传入任意数量的整型参数 func sum(nums ...int) {total : 0for _, num : range nums {total num}fmt.Println(total) }Go 语言 tag…

pandas算术运算、逻辑运算、统计运算describe()函数、统计函数、累计统计函数及自定义函数运算

一、pandas算术运算 直接对数据进行加、减、乘、除等运算,可使用函数add()、sub()、mul()、div()或、-、、 代码如下 数据生成 import pandas as pd import numpy as np# 数据生成代码 num np.random.randint(50, 100, (3, 5))# 传入标签索引 column [第一列, …

[hadoop全分布部署]安装Hadoop、配置Hadoop 配置文件①

👨‍🎓👨‍🎓博主:发量不足 个人简介:耐心,自信来源于你强大的思想和知识基础!! 📑📑本期更新内容:安装Hadoop、配置Hadoop 配置文件…

基于SSM的高校课程评价系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

一文带你深入理解【Java基础】· 注解

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

多线程编程【条件变量】

条件变量📖1. 为什么需要条件变量?📖2. 条件变量概念📖3. 发信号时总是持有锁📖4. 生产者消费者问题📖5. 基于阻塞队列的生产者消费者模型📖1. 为什么需要条件变量? 在很多情况下&a…