JavaEE IO流(1)
1.什么是IO流
(1)input输入
Output输出
这两个的首字母就是IO的组成
(2)比如你的电脑可以通过网络上传文件和下载文件
这个上传文件就是Output
这个下载翁建就是input
(3)这个输入和输出的标准是以CPU为参照物为基准的
其中通过控制台来将数据传入到CPU中也是Input输入的过程。
图解
2.什么是文件
(1)在我们的电脑上面定义的文件是一个抽像的概念。
在我们的电脑上面有两种资源我们将硬件资源和软件资源统称为文件
(2)在我们的接下来的讲解中,我们讲解的文件指的是硬件资源
(3)其中我们要注意的就是我们电脑上面的资源管理器其实也是一格资源,它的名字是目录资源,他是将电脑硬件上面的资源来进行记录的。目录资源其实是一格树状的结构、
3.路径
3.1相对路径
相对路径是的起点可以是任意的路径,可以是以现在工作的路径往下面进行遍历的路径
3.2绝对路径
相对路径就是以此电脑为出发点来进行二叉树的遍历的路径
3.3路径的表示
所以在日常的开发中我建议大家使用/
如果想用\的话可以用转义字符来进行转义
3.4用路径找到文件
4.文本文件和二进制文件
(1)文本文件存储的数据要求必须是合法的字符
(2)二进制文件存储的数据可以是任意数据
(3)判断一个文件是二进制文件还是不是二进制文件可以用文档来打开,然后这个文档如果显示的是乱码的话那么这个就是一格二进制文件如果反之就是文本文件。
(4)下图总的就是一格二进制的文本文件
5.针对文件进行操作
(1)在大部分的文件操作有很多种简称(CRUD)
(2)也就是对文件进行
文件的创建,删除文件,创建目录,重命名文件
(4)在java中提供了File包来对文件进行操作(java.io)包中存着所有的java关于输入和输出的操作。
(5)
5.1用file类实现对文件目录的操作
以下这些操作就是日常中比较常用的file对文件进行的操作
(1)上面的这些操作其实都是调用了系统本身的api,这个是由c++编写的JVM来进行调用的,注意不同的操作系统的api的差距是非常大的。
(2)但是要知道的一件事就是JVM也有linux 等等的版本,所以jvm是非常nb的。
(3)****其中要注意的就是基准目录是什么,基准目录可以理解为你当前这个文件工作的目录就是基准目录**************
图示
(3)其中在多线程的情况下我们可以搭配try ctatch和throw IOException来抛出这个线程的异常
5.2针对临时文件的删除
在我们运行一些文件的时候可能会产生临时的文件,例如我们的word在新建的时候会有两个文档分别是一个临时的,还有一个是主要的文件,临时文件是为了能够记录你电脑在极端情况下断电啥的,然后可以找回
通过这个就可以删除临时文件。
通过这个就可以更好的删除这些文件。
5.3总结加扩展
文件有几种操作分别是
读文件,写文件,打开文件关闭文件
上面的这些操作其实就是stream这个操作
举例
6.针对文件的操作可以将文件分为(字符流)(文件流)
6.1字符流(二进制文件)
(1)inputStream
(2)OutputStream
6.2文件流(文本文件)
(1)read
(2)writer
6.3总结
(1)在后面的学习中我们会使用构造方法打开文件读写文件
(2)通过read和write来读写文件,然后用close来关闭文件
(3)字节!=字符往往多个字节对应多个字符
在java中我们用这个就能够来对字符来进行转换从文字变到字符流
7.简单总结
(1)要注意的就是字节流以及字符流中的这些input Stream这些方法由于是构造方法所以是不能实例化的。
8.标注库中对于File使用
(1)我们创建一格File类如果能够读取这个文件的话那么就可以对这个文件进行操作CRUD
8.1读取操作
读取的操作有三种
8.1.1无参数类型read()
(1)第一种是无参数进行文件的读取,然后这个是一个字节一个字节进行读取,读取到的内容后面会进行返回。
(2)注意返回值应该是byte类型,因为byte的最大的返回值其实就是1字节,但是要注意的就是最后返回的其实是int类型
(3)其实最后的返回值是int类型,因为byte是只能表示正数,然后读取不到-1,但是int可以读取到,然后-1再字符集中表示的是结束的意思
8.1.带一个参数的版本read(byte)
(1)这个是写一个byte类型的数组然后我们会将数据存入到byte类型的数组中,
(2)这个读取多少取决于这个数组的长度是多少,read方法尽可能多的填满这个byte类型的数组
(3)最后返回值为int类型表示实际读取了多少的字节
代码示例
8.3对比
这两个方法对CPU资源的开销是一样的类似于你攒起来扔垃圾和用一次扔一样
(4)其中我们要注意的就是在实际的开发中我们还有可能用数组来存储读到的不同数据
8.2一些扩展知识
(1)我们平时见到的英文字母其实都是ascii表写出来的。(计算机中的字母和ascii一一对应)
(2)我们平时的图片是由字符串表示出来的。
(3)我们在操作文件的时候在不需要这个文件的时候需要关闭这个文件,也许在平时的过程中我们感知不到这个操作的重要性,但是在工作的过程中服务器是24小时运行的这时候字符表就会被占满,这时候就会发生内存的泄漏
(4)文件描述表,这个表可以进行配置其中每个系统的长度是不一样的。
(5)
9.运用inputSTream来实现文件流的读取
10.OutputStream的使用
10.1基础用法(三种)
(1)
其中注意的是在写的方法中如果我们没有选择追加写的方式来打开那么就会将整个文件给清除,所以我们在写的时候要注意这一点
(2)
11知识的扩展
11.1读read
(1)java中的char其实是2个字节但是我们的汉字是3个字节(UTF-8) ,但是在java中我们是使用UTF-8来进行编码的,在这个转码过程中会把3个字节的汉字转成unicade(2个字节)这时候就是两个字节的
(2)在java中内置了UTF-8编码以及ubicade这两种编码
(3)其中在java中的STring类是六个字节他是用byte来存储字符串的
(4)char是用unicade来进行编码的
11.2扩展注意事项
(1)在使用输入流的时候可以使用scanner来进行扫描辅助,但是在做题的时候我是不建议大家使用这个的
(2)在写算法的代码题的时候是有一套复杂的io(目的是筛选人才)
11.3示例1(查询文件)
(1)扫描指定的目录然后删除这个文件中的内容,然后询问用户是否要进行删除
(2)先给定一个目录和查询词然后在写程序的时候看哪个查询词,把匹配的结果给查询到
(3)在File中有一个类是listFile这个可以把这个文件中包含哪些目录给列举出来
(4)这个查找这个是一个递归的过程
11.3示例2(复制文件)
(1)输入一个路径表示这个是要复制这个文件的路径
(2)再输入一个路径表示的是这个复制了的文件以后要去的文件的路径
(3)判断输入的路径是否是合法的。
(4)判断要复制文件的父目录是否存在
在这里有两个判断方法
get Parent File(File)这个返回的是File
getParent(String)这个是返回的父目录的路径
在这里我们推荐使用File类中提供的方法
(5)如果这个父目录是不存在的那么我们就需要创建一个
(6)其中在创建文件的时候都要判断这个路径是否是合法的。(永远都不要相信用户)
11.4示例3(前两种示例的结合)
(1)将整个文件给读出来然后进行查找
(2)isDirectory()
方法只会检查路径所指向的对象是否是一个目录,而不会检查目录是否存在或其他操作系统权限等问题。如果路径指向的对象不存在,则该方法也会返回 false
。
相关文章:

JavaEE IO流(1)
1.什么是IO流 (1)input输入 Output输出 这两个的首字母就是IO的组成 (2)比如你的电脑可以通过网络上传文件和下载文件 这个上传文件就是Output 这个下载翁建就是input (3)这个输入和输出的标准是以CPU为参照物为基准的 其中通…...
Prisma是什么:现代数据库工具和ORM
Prisma是什么:现代数据库工具和ORM 引言 Prisma 是一个流行的开源数据库工具和对象关系映射(ORM)系统,用于帮助开发者以类型安全的方式与数据库进行交互。它提供了一套丰富的功能,包括数据库建模、迁移管理、数据访问…...

SpringBootWeb登录认证
JWT令牌 JSON Web Token JSON Web Tokens - jwt.ioJSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is digitally signed using JSON Web Signatur…...
vim编辑器的使用
删除当前行及以后的行 使用vim编辑器打开文件 vim xxx.txt删除指定行及后面所有行,光标定位到要删除的第一行,比如:删除第10行以后的数据,光标定位到11行,然后在命令模式下按dG...
深入理解Linux网络总结
1、内核如何接收网络包 1.1 RingBuffer到底是什么,RingBuffer为什么会丢包? 问:RingBuffer到底存在那一块,是如何被使用到的,真的就只是一个环形队列吗?RingBuffer内存是预先分配好的,还是随着…...
Python冷知识
Python作为一种广泛使用的编程语言,有许多功能和特性可能不为初学者或普通用户所熟知。以下是一些相对冷门但有趣的Python知识: 魔术方法:Python中有一些特殊的方法,通常以双下划线__开头和结尾,被称为魔术方法(或特殊方法)。例如,__init__用于初始化对象,__str__返回…...

Redis之内存管理过期、淘汰机制
1.Redis内存管理 我们的redis是一个内存型数据库,我们的数据也都是放在内存中的,内存是有限的空间,当数据满了之后,我们要怎么样继续保证redis的可用性呢?我们就需要采取点管理措施和机制来保证我们redis的可用性。 在redis.co…...

金融科技赋能跨境支付:便捷与安全并驾齐驱
一、引言 在全球经济一体化的背景下,跨境支付作为国际贸易和金融活动的重要组成部分,正迎来金融科技浪潮的洗礼。金融科技以其独特的创新性和颠覆性,正在重塑跨境支付市场的格局,使其更加便捷、高效且安全。本文旨在探讨金融科技如何助力跨境支付,实现便捷与安全并存,并…...

【康耐视国产案例】智能AI相机:深度解析DataMan 380大视野高速AI读码硬实力
随着读码器技术的不断更新迭代,大视野高速应用成为当前工业读码领域的关键发展方向。客户对大视野高速读码器的需求源于其能显著减少生产成本并提升工作效率。然而,大视野应用场景往往伴随着对多个条码的读取需求,这无疑增加了算法的处理负担…...

SQL实验 带函数查询和综合查询
一、实验目的 1.掌握Management Studio的使用。 2.掌握带函数查询和综合查询的使用。 二、实验内容及要求 1.统计年龄大于30岁的学生的人数。 --统计年龄大于30岁的学生的人数。SELECT COUNT(*) AS 人数FROM StudentWHERE (datepart(yea…...
【前端每日基础】day34——HTTP和HTTPS
HTTP(Hypertext Transfer Protocol)和HTTPS(Hypertext Transfer Protocol Secure)是互联网通信协议,用于在Web浏览器和Web服务器之间传输数据。以下是对HTTP和HTTPS的详细介绍: HTTP(Hypertext…...
go mongo 唯一索引创建
1. 登录mongo,创建数据库 mongosh -u $username -p $password use test 2. 查看集合索引 db.$collection_name.getIndexes() 为不存在的集合创建字段唯一索引 package mainimport ("context""fmt""log""time""go…...
微信小程序如何进行页面跳转
微信小程序中的页面跳转可以通过多种方式实现,以下是几种主要的跳转方式及其详细解释: wx.navigateTo 功能:保留当前页面,跳转到应用内的某个页面。特点: 可以在新页面使用wx.navigateBack返回原页面。每跳转一个新页…...

信息标记形式 (XML, JSON, YAML)
文章目录 🖥️介绍🖥️三种形式🏷️XML (Extensible Markup Language)🔖规范🔖注释🔖举例🔖其他 🏷️JSON (JavaScript Object Notation)🔖规范🔖注释&#x…...

C语言:学生成绩管理系统(含源代码)
一.功能 二.源代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_NUM 100 typedef struct {char no[30];char name[10];char sex[10];char phone[20];float cyuyan;float computer;float datastruct; } *student, student1;typ…...

MySQL 导出导入的101个坑
最近接到一个业务自行运维的MySQL库迁移至标准化环境的需求,库不大,迁移方式也很简单,由开发用myqldump导出数据、DBA导入,但迁移过程坎坷十足,记录一下遇到的各项报错及后续迁移注意事项。 一、 概要 空间问题源与目…...

OpenCv之简单的人脸识别项目(人脸提取页面)
人脸识别 准备五、人脸提取页面1.导入所需的包2.设置窗口2.1定义窗口外观和大小2.2设置窗口背景2.2.1设置背景图片2.2.2创建label控件 3.定义单人脸提取脚本4.定义多人脸提取脚本5.创建一个退出对话框6.按钮设计6.1单人脸提取按钮6.2多人脸提取按钮6.3返回按钮 7.定义关键函数8…...

linux 内核映像差异介绍:vmlinux、zImage、zbImage、image、uImage等
一、背景 Linux内核是整个Linux操作系统的核心部分,它是一个负责与硬件直接交互的软件层,并且提供多种服务和接口,让用户程序能够方便地使用硬件资源。 当我们编译自定义内核时,可以将其生成为以下内核映像之一:vmli…...

【Linux-INPUT输入的子系统】
Linux-INPUT输入的子系统 ■ input 子系统简介■ input 驱动编写流程■ 事件类型 ■ ■ input 子系统简介 input 子系统就是管理输入的子系统, input 子系统分为 input 驱动层、 input 核心层、 input 事件处理层,最终给用户空间提供可访问的设备节点 …...

密码加密及验证
目录 为什么需要加密? 密码算法分类 对称密码算法 非对称密码算法 摘要算法 DigestUtils MD5在线解密工具原理 实现用户密码加密 代码实现 为什么需要加密? 在MySQL数据库中,我们常常需要对用户密码、身份证号、手机号码等敏感信息进…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...

高效的后台管理系统——可进行二次开发
随着互联网技术的迅猛发展,企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心,成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统,它不仅支持跨平台应用,还能提供丰富…...