【Java】I/O流—File类:从0到1的全面解析

🎊专栏【Java】

🌺每日一句:看不清楚未来时,就比别人坚持久一点

⭐欢迎并且感谢大家指出我的问题

目录

1.File概述

2.File构造方法

(1).根据文件路径创建文件对象

(2).根据父路径名字符串和子路径名字符串创建对象

(3).根据父路径对应文件对象和子路径名字符串创建对象

3.File成员方法

(1).判断,获取

(2).创建,删除

1.createNewFile(创建文件)

2.mkdir(创建文件夹)

3.mkdirs(创建多级文件夹)

4.delete(删除文件)

(3).获取并遍历


1.File概述

在Java编程语言中,File类是用于表示文件和目录路径的类。通过File类,可以进行文件和目录的创建、删除、重命名等操作,以及获取它们的属性信息。File类提供了一系列方法,使得对文件系统中的文件和目录进行操作变得简单和方便。

本文将详细介绍File类的构造方法和主要成员方法,并给出示例代码帮助大家学习和巩固File类的各种用法。

2.File构造方法

ccc5293c93234bd7a353261cbf37eadd.png

(1).根据文件路径创建文件对象

public File(String pathname)

代码如下👇🏻

88eb5bc039094bcab2042be8b2bf1752.png

(2).根据父路径名字符串和子路径名字符串创建对象

public File(String parent,string child)

9c6e7e3df77144049b288bdc1f015c20.png

(3).根据父路径对应文件对象和子路径名字符串创建对象

public File(File parent,string child)

9f8e724d043849d4945b883e33c37861.png

3.File成员方法

(1).判断,获取

298d15a9612b49e78355cf838ead98dc.png

代码如下👇🏻

package File;
import java.io.File;
public class FileDemo2 {
  public static void main(String[] args) {
    File f1=new File("D:\\aaa\\b.txt");
    System.out.println(f1.isDirectory());
    System.out.println(f1.isFile());
    System.out.println(f1.exists());
	}
}

 运行结果👇🏻

ced5eedc4a384488b6f7c9205d9fca9d.png

(2).创建,删除

f745c0f7e7c7492a805b7f190900dc8e.png

1.createNewFile(创建文件)

注意1:如果当前路径是不存在的,则创建成功,方法返回True。
如果当前路径是存在的,则创建失败,方法返回false。

注意2:如果父级路径是不存在的,那么方法会有异常IOException。
注意3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件。

代码如下👇🏻

package File;
import java.io.File;
import java.io.IOException;
public class FileDemo4 {
  public static void main(String[] args) throws IOException {
    File f1=new File("D:\\aaa\\c.txt");
    boolean b = f1.createNewFile();
    System.out.println(b);
   }
}

运行结果👇🏻

ee0fdadd4eb8438fa2136edcb88c0e40.png

2.mkdir(创建文件夹)

注意1:windows中路径是唯一的,如果当前路径已经存在,则创建失败,返回flase

注意2:mkdir方法只能创建单级文件夹,无法创建多级文件夹

代码如下👇🏻

package File;
import java.io.File;
public class FileDemo5 {
  public static void main(String[] args) {
    File f1=new File("D:\\aaa\\ddd");
    boolean b = f1.mkdir();
    System.out.println(b);
	}
}

运行结果👇🏻

d8888be4f0254bee86585074f53337a3.png

3.mkdirs(创建多级文件夹)

注意:既可以创建单级文件夹,又可以创建多级文件夹

代码如下👇🏻

package File;
import java.io.File;
public class FileDemo5 {
  public static void main(String[] args) {
     File f2=new File("D:\\aaa\\bbb\\ccc\\ddd");
     boolean b = f2.mkdirs();
     System.out.println(b);
	}
}

运行结果👇🏻

62a92332c6544c72b3f1d6f825c1121a.png

4.delete(删除文件)

d68bb8d83bcc4bdaa3d88c105c9024fa.png

注意1:如果删除的是文件,则直接删除,不走回收站

注意2:如果删除的是空的文件夹,则直接删除,不走回收站

注意3:如果删除的是有内容的文件夹,则删除失败

package File;
import java.io.File;
public class FileDemo5 {
  public static void main(String[] args) {
     File f1=new File("D:\\aaa\\a.txt");
     boolean b = f1.delete();
     System.out.println(b);
	}
}

(3).获取并遍历

636d3694a3024ded876b97a74e8e54fb.png

listFiles:该方法用于遍历某个指定目录下的所有文件的名称。

练习1

(遍历aaa文件下的目录)

代码如下👇🏻

package File;
import java.io.File;
public class FileDemo6 {
  public static void main(String[] args) {
      File f1= new File("D:\\aaa");
      File [] files =f1.listFiles();
      for (File file:files) {
		   System.out.println(file);
		}
	}
}

运行结果👇🏻

f9a3dbc5bab641ec9c61e9b6ec65953d.png

2cebfdbf957d4029893d6a5c264415a4.png

练习2

(判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称)
分析
     A:封装e判断目录
     B:获取该目录下所有文件或者文件夹的File数组
     C:遍历该File数组,得到每一个File对象,然后判断
    D:是否是文件
         是:继续判断是否以.jpg结尾
             是:就输出该文件名称
                 否:不搭理它
             否:不搭理它

public class FileDemo {
	public static void main(String[] args) {
		// 封装e判断目录
		File file = new File("e:\\");
		// 获取该目录下所有文件或者文件夹的File数组
		File[] fileArray = file.listFiles();
		// 遍历该File数组,得到每一个File对象,然后判断
		for (File f : fileArray) {
			// 是否是文件
			if (f.isFile()) {
				// 继续判断是否以.jpg结尾
				if (f.getName().endsWith(".jpg")) {
					// 就输出该文件名称
					System.out.println(f.getName());
				}
			}
		}
	}
}	

🌺学习编程需要勤加练习,勇于实践,建议大家亲自动手操作,这样才能不断进步,掌握编程技巧,欢迎大家在评论区进行讨论。🌺

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于性能测试,你不知道的事应用性能监控:SkyWalking

SkyWalking 简介 SkyWalking 是一款优秀的 APM 工具(Application Performance Monitoring,应用性能监控),专为微服务、云原生架构和基于容器(Docker、K8S、Mesos)的架构而设计,包含了分布式追踪…

14-1、IO流

14-1、IO流 lO流打开和关闭lO流打开模式lO流对象的状态 非格式化IO二进制IO读取二进制数据获取读长度写入二进制数据 读写指针 和 随机访问设置读/写指针位置获取读/写指针位置 字符串流 lO流打开和关闭 通过构造函数打开I/O流 其中filename表示文件路径,mode表示打…

【PWN】学习笔记(二)【栈溢出基础】

课程教学 课程链接:https://www.bilibili.com/video/BV1854y1y7Ro/?vd_source7b06bd7a9dd90c45c5c9c44d12e7b4e6 课程附件: https://pan.baidu.com/s/1vRCd4bMkqnqqY1nT2uhSYw 提取码: 5rx6 C语言函数调用栈 一个栈帧保存的是一个函数的状态信息&…

前端mp3文件转wav文件的实现

一、音频文件格式转换 1)安装fluent-ffmpeg和ffmpeg插件 npm install fluent-ffmpeg; npm install ffmpeg;2)mp3转wav test.js文件: const ffmpeg require(fluent-ffmpeg);ffmpeg(./test.mp3) .format(wav) .audioBitrate(16k) .audioFre…

Shutter的安装及使用

概要:本篇主要讲述截图软件Shutter的安装和使用,操作系统是Ubuntu22.04 一、安装 sudo apt install shutter 二、区域截图 1、打开Shutter,点击Selection 2、提示信息 3、框选矩形区域 按住鼠标左键,拖动鼠标,松…

基于SSM的健身房预约系统设计与实现

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

@Styles和@Extend的区别(鸿蒙开发)

如果每个组件的样式都需要单独设置,在开发过程中会出现大量代码在进行重复样式设置,虽然可以复制粘贴,但为了代码简洁性和后续方便维护,我们推出了可以提炼公共样式进行复用的装饰器Styles。 Styles装饰器可以将多条样式设置提炼成…

模型 心流

本系列文章 主要是 分享模型,涉及各个领域,重在提升认知。完全投入其中。 1 心流的应用 1.1 优秀运动员的心流体验 迈克尔乔丹(Michael Jordan):篮球之神乔丹在比赛中经常进入心流状态,他曾表示&#xff…

Java_LinkedList链表详解

目录 前言 ArrayList的缺陷 链表 链表的概念及结构 链表的种类 1.单向或双向 2.带头或不带头 3.循环或不循环 LinkedList的使用 什么是LinkedList LinkedList的使用 LinkedList的构造 LinkedList的其他常用方法介绍 LinkedList的遍历 ArrayList和LinkedList的…

1833_emacs_smex的替代品counsel

Grey # :OPTIONS ^:nil emacs smex的替代品counsel 尝试原因 之前使用emacs的生涯中,大部分时间都在使用spacemacs的配置。由于自己对于设计实现的一点好奇,加上spacemacs配置过于庞大,催生了自己维护一套精简够用的配置的想法。这个配置…

Netty源码学习7——netty是如何发送数据的

一丶Write事件的产生和传播 在业务逻辑处理完毕后,需要调用write 或者 writeAndFlush方法 ChannelHandlerContext#write or writeAndFlush方法会从当前 ChannelHandler 开始在 pipeline 中向前传播 write 事件直到 HeadContext。 ChannelHandlerContext.channel()#…

Leetcode100 链表|2. 两数相加160. 相交链表 234. 回文链表

2. 两数相加 题目:给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0…

JAVA高级(后端需深入移步)

单元测试:使用Junit单元测试框架 使用Junit单元测试: 通过左侧的对❌来进行提示 Junit框架的常见注解: 反射(用于框架,也是最重要):展示框架的成员信息 由于是用于对象,即使在获取…

【Java期末复习资料】(2)常见例题 //持续更新

本文章主要是常见例题,解析不会太详细,有问题、不会的可以给我发消息哦,后续会出模拟卷 常见例题: 1.下列跟Java技术平台有关的是(ABD) A.JVM B.JDK C.JPN D.JRE 2.面向对象的特征包括(ACD&…

m.2固态硬盘怎么选择?

一、什么是固态硬盘 固态硬盘又称SSD,是Solid State Drive的简称,由于采用了闪存技术,其处理速度远远超过传统的机械硬盘,这主要是因为固态硬盘的数据以电子的方式存储在闪存芯片中,不需要像机械硬盘那样通过磁头读写磁…

五:爬虫-数据解析之xpath解析

三:数据解析之xpath解析 1.xpath介绍: ​ xpath是XML路径语言,它可以用来确定xml文档中的元素位置,通过元素路径来完成对元素的查找,HTML就是XML的一种实现方式,所以xpath是一种非常强大的定位方式​ XPa…

LeetCode5.最长回文子串

昨天和之前打比赛的队友聊天,他说他面百度面到这道算法题,然后他用暴力法解的,面试官让他优化他没优化出来,这道题我之前没写过,我就想看看我能不能用效率高一点的方法把它做出来,我一开始就在想用递归或者…

FreeSSL申请免费域名证书

本文详细讲解如何申请免费证书,需要先准备好域名,将服务器IP和域名绑定。 1、注册FreeSSL账号 网址: https://freessl.org/ 2、申请流程 登录后首页输入域名,然后点击Create certificate,跳转到证书申请页面。 或者…

使用最小花费爬楼梯

1.状态表示 2.状态转移方程 3.初始化 保证填表时, 不越界 4.填表顺序 从左往右 5.返回值 解法2: 1.状态表示 2.状态转移方程 3.初始化 4.填表 从右往左 5.返回值 min( dp[0] , dp[1] ) ----------------------------------------------------…

基于TCP的多路复用

1. 知识点 目前支持I/O多路复用的系统调用有select,pselect,poll,epoll。与多进程和多线程技术相 比,I/O多路复用技术的最大优势是系统开销小,系统不必创建进程/线程,也不必维护这些进 程/线程,…