当前位置: 首页 > news >正文

IO学习笔记

当前需求,希望进行游戏可以保存游戏进度,可以将游戏的进度保存到一个文本文件,每一次打完游戏更新文本内容,下一次打游戏读取游戏进度,这里就涉及到两个知识IO流和File的知识。
在这里插入图片描述

File类

概述

  • java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作
  • File对象表示一个路径,可以是文件夹的路径,也可以是文件的路径。
  • 无论该路径下是否存在文件或者目录,都不影响File对象的创建。
  • 不同的操作系统有不同的分隔符,使用构造方法进行路径拼接是一个保险的方式。

构造方法

  • public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例(通过文件路径创建文件对象),这样做的目的就是通过对象调用一些方法去完成一些操作,比如File.delete()删除当前文件。
  • public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
  • public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
  • 构造举例,代码如下:
// 文件路径名
String pathname = "D:\\aaa.txt";
File file1 = new File(pathname); 
file1.delete() // 通过创建对象,去调用一些方法,执行这一步,就会删除aaa.txt// 文件路径名
String pathname2 = "D:\\aaa\\bbb.txt";
File file2 = new File(pathname2); // 通过父路径和子路径字符串String parent = "d:\\aaa";String child = "bbb.txt";File file3 = new File(parent, child);// 通过父级File对象和子路径字符串
File parentDir = new File("d:\\aaa");
String child = "bbb.txt";
File file4 = new File(parentDir, child);

在这里插入图片描述

常用方法

学习方法:不需要去背,只需要使用的时候有印象,通过idea的提示写出即可。
思考为什么会有这些方法,它一定有原因

获取功能的方法

  • public String getAbsolutePath() :返回此File的绝对路径名字符串。

  • public String getPath() :将此File转换为路径名字符串。

  • public String getName() :返回由此File表示的文件或目录的名称。

  • public long length() :返回由此File表示的文件的长度。

    方法演示,代码如下:

public class FileGet {public static void main(String[] args) {File f = new File("d:/aaa/bbb.java");     System.out.println("文件绝对路径:"+f.getAbsolutePath());System.out.println("文件构造路径:"+f.getPath());System.out.println("文件名称:"+f.getName());System.out.println("文件长度:"+f.length()+"字节");File f2 = new File("d:/aaa");     System.out.println("目录绝对路径:"+f2.getAbsolutePath());System.out.println("目录构造路径:"+f2.getPath());System.out.println("目录名称:"+f2.getName());System.out.println("目录长度:"+f2.length());}
}
输出结果:
文件绝对路径:d:\aaa\bbb.java
文件构造路径:d:\aaa\bbb.java
文件名称:bbb.java
文件长度:636字节目录绝对路径:d:\aaa
目录构造路径:d:\aaa
目录名称:aaa
目录长度:4096

绝对路径和相对路径

  • 绝对路径:从盘符开始的路径,这是一个完整的路径。
  • 相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。
public class FilePath {public static void main(String[] args) {// D盘下的bbb.java文件File f = new File("D:\\bbb.java");System.out.println(f.getAbsolutePath());// 项目下的bbb.java文件File f2 = new File("bbb.java");System.out.println(f2.getAbsolutePath());}
}
输出结果:
D:\bbb.java
D:\idea_project_test4\bbb.java

判断功能的方法

  • public boolean exists() :此File表示的文件或目录是否实际存在。
  • public boolean isDirectory() :此File表示的是否为目录。
  • public boolean isFile() :此File表示的是否为文件。

方法演示,代码如下:

public class FileIs {public static void main(String[] args) {File f = new File("d:\\aaa\\bbb.java");File f2 = new File("d:\\aaa");// 判断是否存在System.out.println("d:\\aaa\\bbb.java 是否存在:"+f.exists());System.out.println("d:\\aaa 是否存在:"+f2.exists());// 判断是文件还是目录System.out.println("d:\\aaa 文件?:"+f2.isFile());System.out.println("d:\\aaa 目录?:"+f2.isDirectory());}
}
输出结果:
d:\aaa\bbb.java 是否存在:true
d:\aaa 是否存在:true
d:\aaa 文件?:false
d:\aaa 目录?:true

创建删除功能的方法

  • public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
  • public boolean delete() :删除由此File表示的文件或目录。
  • public boolean mkdir() :创建由此File表示的目录。
  • public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

方法演示,代码如下:

public class FileCreateDelete {public static void main(String[] args) throws IOException {// 文件的创建File f = new File("aaa.txt");System.out.println("是否存在:"+f.exists()); // falseSystem.out.println("是否创建:"+f.createNewFile()); // trueSystem.out.println("是否存在:"+f.exists()); // true// 目录的创建File f2= new File("newDir");	System.out.println("是否存在:"+f2.exists());// falseSystem.out.println("是否创建:"+f2.mkdir());	// trueSystem.out.println("是否存在:"+f2.exists());// true// 创建多级目录File f3= new File("newDira\\newDirb");System.out.println(f3.mkdir());// falseFile f4= new File("newDira\\newDirb");System.out.println(f4.mkdirs());// true// 文件的删除System.out.println(f.delete());// true// 目录的删除System.out.println(f2.delete());// trueSystem.out.println(f4.delete());// false}
}

API中说明:delete方法,如果此File表示目录,则目录必须为空才能删除。

相关文章:

IO学习笔记

当前需求,希望进行游戏可以保存游戏进度,可以将游戏的进度保存到一个文本文件,每一次打完游戏更新文本内容,下一次打游戏读取游戏进度,这里就涉及到两个知识IO流和File的知识。 File类 概述 java.io.File 类是文件…...

汇编练习-1

1、要求 练习要求引自《汇编语言-第4版》实验10.3(P209页) -编程,将data段中的数据,以10进制的形式显示出来 data segment dw 123,12666,1,8,3,38 data ends 2、实现代码(可惜没找到csdn对8086汇编显示方式) assume cs:codedata segmentdw 16 dup(0) ;除…...

初识二叉树( 二)

初识二叉树 二 实现链式结构二叉树前中后序遍历遍历规则代码实现 结点个数以及高度等层序遍历判断是否为完全二叉树 实现链式结构二叉树 ⽤链表来表示⼀棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针…...

AcWing1077-cnblog

问题背景 给定一个树形结构的图,每个节点代表一个地点,每个节点有一个守卫的代价。我们希望以最低的代价在树的节点上放置守卫,使得整棵树的所有节点都被监控。可以通过三种方式覆盖一个节点: 由父节点监控。由子节点监控。自己…...

五、SpringBoot3实战(1)

一、SpringBoot3介绍 1.1 SpringBoot3简介 SpringBoot版本:3.0.5 https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.introducing-spring-boot 到目前为止,你已经学习了多种配置Spring程序的方式…...

练习LabVIEW第三十三题

学习目标: 刚学了LabVIEW,在网上找了些题,练习一下LabVIEW,有不对不好不足的地方欢迎指正! 第三十三题: 用labview编写一个判断素数的程序 开始编写: LabVIEW判断素数,首先要搞…...

如何在服务器端对PDF和图像进行OCR处理

介绍 今天我想和大家分享一个我在研究技术资料时发现的很好玩的东西——Tesseract。这不仅仅是一个普通的库,而是一个用C语言编写的OCR神器,能够识别一大堆不同国家的语言。我一直在寻找能够处理各种文档的工具,而Tesseract就像是给了我一把…...

Windows 下实验视频降噪算法 MeshFlow 详细教程

MeshFlow视频降噪算法 Meshflow 视频降噪算法来自于 2017 年电子科技大学一篇高质量论文。 该论文提出了一个新的运动模型MeshFlow,它是一个空间平滑的稀疏运动场 (spatially smooth sparse motion field),其运动矢量 (motion vectors) 仅在网格顶点 (m…...

Python入门:如何正确的控制Python异步并发量(制并发量的关键技巧与易错点解析)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 异步并发量控制 📒📝 Python异步并发简介📝 为什么要限制并发量🎈 资源管理🎈 服务稳定性📝 新手容易犯的错误🎈 忽略并发量限制🎈 错误设置并发量📝 设置并发量要注意的事情🎈 了解任务类型🎈 考虑系统资…...

qt QCheckBox详解

QCheckBox 是 Qt 框架中的一个控件,用于创建复选框,允许用户进行选择和取消选择。它通常用于表单、设置界面和任何需要用户选择的场景。 QCheckBox继承自QAbstractButton类,因此继承了按钮的特性。它表示一个复选框,用户可以通过…...

PAT甲级-1041 Be Unique

题目 题目大意 从一组数字中选出第一个唯一出现的数,输出该数。如果没有,则输出None。 思路 哈希的思想,将数值作为索引,对应该数值出现的次数,然后遍历数组即可。 注意第一个数字是指数字的个数,不是数…...

【jvm】如何设置堆内存大小

目录 1. 使用命令行参数设置2. idea中设置3. 注意事项 1. 使用命令行参数设置 1.在Java命令后添加-Xms和-Xmx参数。2.-Xms参数用于设置JVM的初始堆内存大小,等价于-XX:InitialHeapSize。3.-Xmx参数用于设置JVM的最大堆内存大小,等价于-XX:MaxHeapSize。…...

kernel源码分析 do_msgsnd read_msg

笔者分析的源码是v 5.11.22 链接:msg.c - ipc/msg.c - Linux source code v5.11.22 - Bootlin do_msgsnd static long do_msgsnd(int msqid, long mtype, void __user *mtext,size_t msgsz, int msgflg) {struct msg_queue *msq;struct msg_msg *msg;int err;str…...

掌握 CTE 技巧,实现连续日期和月份的 SQL 报表统计

在 SQL 查询中,报表统计往往涉及到特定时间段内的数据汇总,如每日、每月的销售数据等。然而,面对缺少数据的日期或月份,传统 SQL 查询可能会直接跳过这些日期,使得输出的报表在视觉上并不连续。本文将展示如何利用 CTE…...

【表格解决问题】EXCEL行数过多,WPS如何按逐行分别打印多个纸张中

1 问题描述 如图:我的表格行数太多了。打印在一张纸上有点不太好看 2 解决方式 Step01:先选中你需要打印的部分,找到【页面】->【打印区域】->【设置打印区域】 Step02:先选中一行,找到【插入分页符】 Step0…...

Maven讲解从基础到高级配置与实践

一、基础认知 1.1 Maven 的主要作用 Maven 主要是用来管理 Java 项目构建流程的工具,包括以下几个方面: 依赖管理:通过 POM.xml 文件管理项目的外部依赖库,不同版本的依赖包可以通过 Maven 中央仓库自动下载,减少了…...

Vue3组件式父子传值

下面是使用 <script setup> 语法的 Vue 3 组件之间传值的示例。 示例 1:使用 Props 和 Emits 父组件 <template><div><h1>父组件</h1><ChildComponent :message="parentMessage" @reply="handleReply" /><p>…...

网页自动化测试和爬虫:Selenium库入门与进阶

网页自动化测试和爬虫&#xff1a;Selenium库入门与进阶 在现代Web开发和数据分析中&#xff0c;自动化测试和数据采集成为了开发流程中的重要部分。Python 的 Selenium 库是一种强大的工具&#xff0c;不仅用于网页自动化测试&#xff0c;也在网页爬虫中得到了广泛的应用。本…...

Cells 单元

Goto Data Grid 数据网格 Cells 单元 Content Alignment 内容对齐 显示数值的数据网格单元格会将其内容向右对齐。显示其他类型数据的单元格将其内容向左排列。若要更改单元格内容对齐方式&#xff0c;请处理 ColumnView.RowCellDefaultAlignment 事件。 Selection Modes 选…...

2024/11/2 安卓创建首页界面

‌Gradle 8.7 bin‌是指Gradle 8.7版本的二进制包&#xff0c;通常以.zip或.tar.gz格式提供。这个二进制包包含了运行Gradle所需的所有文件&#xff0c;用户可以直接下载并解压使用&#xff0c;无需从源代码编译。 首先了解最常用的布局 线性布局&#xff08;从上到下&#x…...

iOS激活锁完美绕过:AppleRa1n完整教程与操作指南

iOS激活锁完美绕过&#xff1a;AppleRa1n完整教程与操作指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 如果您正面临iPhone设备被激活锁困扰的困境&#xff0c;这篇AppleRa1n完整指南将为您提供专…...

物联网设备网络无缝切换与多网融合:exnetif模块实战指南

1. 项目概述&#xff1a;为什么我们需要exnetif&#xff1f; 在物联网项目的实际开发中&#xff0c;我遇到过太多因为网络环境不稳定而导致的“玄学”问题。比如&#xff0c;一个部署在工厂车间的智能网关&#xff0c;原本通过稳定的有线以太网连接云端&#xff0c;一旦生产线调…...

终极GTA5安全增强菜单:YimMenu完全使用指南

终极GTA5安全增强菜单&#xff1a;YimMenu完全使用指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu Y…...

AI智能体技能库:模块化设计、标准化实现与LangChain集成实战

1. 项目概述&#xff1a;一个面向AI智能体的技能库最近在折腾AI智能体&#xff08;Agent&#xff09;开发的朋友&#xff0c;估计都绕不开一个核心问题&#xff1a;如何让一个“大脑”&#xff08;大语言模型&#xff09;具备执行具体任务的能力。你可能会用LangChain、AutoGen…...

如何在5分钟内搭建免费PUBG游戏雷达:终极战场可视化指南

如何在5分钟内搭建免费PUBG游戏雷达&#xff1a;终极战场可视化指南 【免费下载链接】PUBG-maphack-map this is a working copy online-map from jussihi/PUBG-map-hack, use nodejs webserver instead of firebase. 项目地址: https://gitcode.com/gh_mirrors/pu/PUBG-maph…...

Windows用户的救星:APK Installer让你在电脑上轻松运行Android应用

Windows用户的救星&#xff1a;APK Installer让你在电脑上轻松运行Android应用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上体验Androi…...

Yolov5算法界面 PyQt5 +.exe文件部署 yolo双击运行 yolo打包识别

介绍 Yolov5是一种基于深度学习的目标检测算法&#xff0c;PyQt5是一个Python编写的GUI框架&#xff0c;用于创建交互式界面。在部署和运行Yolov5模型时&#xff0c;结合PyQt5可以方便地创建一个用户友好的界面&#xff0c;并将代码打包为.exe文件以供其他人使用。 下面是一个简…...

保姆级教程:用Arduino IDE 2 + STM32Duino点亮你的第一块STM32开发板(附ST-Link驱动与CubeProgrammer配置)

从零开始&#xff1a;用Arduino IDE 2与STM32Duino打造STM32开发环境实战指南 当你第一次拿到STM32开发板时&#xff0c;那种既兴奋又忐忑的心情我完全理解。作为过来人&#xff0c;我深知一个清晰、完整的入门指南对新手有多重要。本文将带你一步步搭建开发环境&#xff0c;避…...

基于Docker的Firefox隐私浏览器camofox:容器化隔离与自动化测试实践

1. 项目概述&#xff1a;一个为隐私而生的浏览器最近在折腾一些需要高度隔离和隐私保护的自动化任务&#xff0c;比如社交媒体管理、数据采集测试&#xff0c;或者只是想在一个完全干净、无痕的环境里浏览特定网站。市面上的主流浏览器&#xff0c;无论是Chrome还是Firefox&…...

如何快速掌握MTKClient:从零开始的联发科设备救砖与调试完整指南

如何快速掌握MTKClient&#xff1a;从零开始的联发科设备救砖与调试完整指南 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient 你是否曾经面对变砖的联发科手机束手无策&#xff1f;是否因为…...