Java中的I/O讲解(超容易理解)(上篇)

如果想观看更多Java内容 可上我的个人主页关注我,地址子逸爱编程-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/a15766649633?spm=1000.2115.3001.5343使用工具 IntelliJ IDEA Community Edition 2023.1.4

使用语言 Java8 

代码能力快速提升小方法,看完代码自己敲一遍,十分有用 

目录

1.File类

1.1 File简述

1.2 使用File操作文件和目录 

1.2.1 创建File对象

1.3 File类的常用方法

1.4 使用方法贯穿示例

1.4.1 示例代码 

1.5 打印盘中首目录的所有文件名方法

2.I(Input)/O(output)流概述

2.1 I/O流的概念与作用

2.2 流的分类 

2.2.1 按流向划分:输入流和输出流 

2.2.2 按处理单元划分:字节流和字符流 

2.2.3 按流的角色划分:节点流和处理流


1.File类

1.1 File简述

在程序运行的过程中,输入/输出是常用的操作,也是必需的部分。允许程序读取外部数据,包括来自磁盘,光盘,文件等存储设备的数据,这类操作属于输入数据;同时允许程序记录运行状态,将程序数据输出到磁盘、光盘、文件等存储设备中,这类操作属于输出数据,数据的输入和输出离不开文件,经常使用到的文件类型有很多,如扩展名为.txt、.doc、.bmp、.class的文件等。 

File类是java.io包下代表操作与平台无关的文件和目录的类,也就是说,如果需要在程序中操作文件或目录,就可以通过File类实现对文件或目录的新建、删除、重命名等操作。

1.2 使用File操作文件和目录 

1.2.1 创建File对象

在程序中,一个File对象可以代表一个文件或目录。它可以查出与文件相关的信息,如名称、修改日期、文件大小等。File类的构造方法定义如下: 

public File(String pathName)

其中,pathName指文件路径。因此,在创建File对象的时候必须设置文件路径。 

例如,操作C盘下的test.txt文件,创建File对象的语句如下:

File file=new File("C:\\test.txt");

提示:
在Windows操作系统中,文件路径名中的路径分隔符可以使用正斜杠"/",如C:/test.txt;也可以使用反斜杠"\",但必须写成"\\",其中第一个"\"表示转义符,如"C:\\test.txt"。
pathNmae可以是相对路径也可以是绝对路径。绝对路径是以根目录(Windows系统中的盘符)开头的完整路径。例如:
File file=new File("C:\\test.txt");

在项目中使用相对路径时,需要放在src同级目录才可以点出来,示例如下:

1.3 File类的常用方法

boolean createNewFile()
    创建新文件
boolean delete()
    删除文件
boolean exists()
    判断文件是否存在
    存在就为true,不存在就为false
Boolean isFile()
    判断是否是文件
    是的话就是true不是就是false
boolean isDirectory()
    判断是否是目录(文件夹)
    是的话就是true不是就是false
long length()
    返回文件长度,单位为字节;若文件不存在,则返回OL
String getPath()
    返回文件名相应的路径
String getAbsolutePath()
    返回此对象表示的文件绝对路径 

这里只列举了File类的一些常用方法,在实际开发中,如需完成对File类的更多操作,则可随时查阅API帮助文档。 

1.4 使用方法贯穿示例

在方法中使用IO流时,可能会发生编译异常(检查异常:FileNotFoundException或IOException),这时需要进行异常处理才能进行编译;

1.4.1 示例代码 

在以上代码中,为保证程序的严谨性,避免错误发生,在创建新文件或删除文件之前,都会使用if语句进行判断,以避免重复创建文件或删除不存在的文件 。 

1.5 打印盘中首目录的所有文件名方法

listFIles()方法代表的就是文件集合;

2.I(Input)/O(output)流概述

2.1 I/O流的概念与作用

File类能够实现对文件和目录的创建、删除等基础性操作,但是无法实现对文件内容的操作,也就是无法实现对文件的读写。而java中的I/O流能够方便地实现数据的输入和输出,是实现文件读写的基础。 

如何解释I/O呢?
I即input,指读入操作,O即output,指写出操作。

 流:指一连串流动的字符,是以先进先出的方式发送和接收数据的通道。既然是流,必然有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘、文件等,甚至可以是Internet上的某个统一资源定位符。所谓I/O流就是实现数据输入和输出的流,在I/O流的基础上,可以实现对文件的读写操作。那么,文件的读写指什么?

读文件,是指把文件中的数据读取到内存中,反之,写文件就是把内存中的数据写到文件中。
java中所有流类型都封装到java.io包中,用以实现I/O操作。下面从不同的角度对流进行分类,它们在概念上会有重叠的地方。

2.2 流的分类 

2.2.1 按流向划分:输入流和输出流 

流具有明确的方向性,按照流的流向来分,可以分为输入流和输出流 :

输入流

  • 只能从中读取数据,而不能写入数据的流,实现程序从数据源中读数据,数据源指文件、磁盘能够存储数据的媒介
  • 程序从数据源中读数据

输出流

  • 只能向其写入数据,而不能从中读数据的流,实现程序向目标数据源中写数据
  • 程序去写目标数据源

Java的输入流主要以InputStream和Reader作为基类(父类),而输出流则主要以OutputStream和Writer作为基类(父类)。它们都是一些抽象类,无法直接实例化对象。

按照流的流向进行分类时,输入流完成数据读入操作,输出流完成数据写出操作,这里的"出"和"入"一定是从程序运行所在内存的角度来论述的。如果从文件或磁盘的角度来论述,方向恰恰相反,混淆了概念就会引发错误。

2.2.2 按处理单元划分:字节流和字符流 

按照处理单元划分,Java中的流可分为字节流和字符流,它们的区别在于操作的数据单元不同。

字节流

  • 以8位字节位为操作数据单元的流,可用于操作二进制数据(如操作图片文件)
  • 字节流是一个一个字节读取的

字符流

  • 以16位的字符作为操作数据单元的流,可用于操作文本数据
  • 字符流是几个几个读取的 

字节流和字符流的用法几乎相同。它们向下细分,还可以划分字节输入流、字节输出流、字符输入流、字符输出流。 

通俗地理解,可以把I/O流看作一个水管,这个水管中依次排列着许多水滴,每滴水滴就是一个处理单元,即一个字节或字符。在字节流中每滴水滴是一个字节,在字符流中每滴水滴时一个字符。

2.2.3 按流的角色划分:节点流和处理流

按流的角色划分,Java中的流可分为节点流和处理流:

节点流
    可以直接向一个特定的存储介质(如磁盘、文件)读写数据的流。当使用节点流进行读写数据操作时,程序直接连接到数据源。
处理流

  • 用于对一个已存在的流进行连接和封装,是通过封装后的流实现读写操作的流。
  • 程序连接数据源是先封装再连接数据源 

处理流就是封装了节点流;

从以上的介绍可以看出,当使用处理流进行读写操作时,程序并不会直接连接到实际的数据源。使用处理流包装节点流,程序通过处理流执行输入和输出功能,让节点流与文件或磁盘等存储介质交互。它可以隐藏底层节点流的差异,并且对外提供更加方便的输入和输出的方法,因此节点流也被称为包装流,它的优势如下:

  • 对开发人员来说,使用处理流进行I/O操作更简单。
  • 使用处理流的执行效率高。 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

已经准备上千道软件测试面试题了,建议大家收藏!!!还有视频详解!

1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自己,不…

Linux手动创建用户不使用useradd【七步走完成】

文章目录 第一步:修改 /etc/passwd 文件第二步:修改 /etc/shadow 文件第三步:修改 /etc/group 文件第四步:新建用户家目录第五步:复制/etc/skel目录下的环境变量配置文件到家目录下第六步:修改家目录的权限…

AI基础知识(2)--决策树,神经网络

1.什么是决策树? 决策树是一类常见的机器学习方法,决策树是基于树的结构来进行决策。决策过程中提出的每一个问题都是对于属性的“测试”,决策的最终结论对应了我们希望的判定结果。一个决策树包含一个根节点,若干个内部节点和若…

这个简单的生活方式,为你带来满满的幸福感

在今天文章的开头,我想请你思考一个问题:影响幸福感的最大因素是什么? 不妨先想一想,再往下拉,继续阅读。 可能不少朋友的回答,会是财富、事业、理想、生活环境、社会地位…… 这些因素当然对幸福感都非常重…

震惊!多数408院校复试线炸穿天际!

兄弟们,别盯着408有多难,你去看看408有多卷 都说408难,可是都去卷408,这是什么意思,一个个的算盘打的比谁都精 还不是因为考408的院校多,机会比较多,不像自命题不好换学校,全国一共…

模板(初阶)

一、介绍: 1.1模板目的: 将重复的活,从程序员手中交给编译器执行。 1.2泛型编程: 编写与类型无关的通用代码,实现代码的复用。 二、函数模板: 2.1函数模板: 函数模板代表了一个函数家族&…

spring boot3登录开发-2(2短信验证码接口实现)

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 上文衔接 内容简介 短信验证码接口实现 1.依赖导入 2.接口分析 3.实现思路 3.功能实现 创建发送短信…

QT的学习

代码练习 做一个UI登录页面 源文件 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("洛克启动!");this->…

Cinema 4D 2024 for mac/Win:开启三维动画与建模新纪元

在数字化时代,三维动画与建模已成为影视、游戏、广告等多个领域不可或缺的创作工具。而Cinema 4D,作为这一领域的佼佼者,始终以其卓越的性能和创新的功能引领着行业的发展。如今,Cinema 4D 2024的发布,更是为我们带来了…

【数据结构与算法】(14):堆排序和选择排序(超详细配图~)

🤡博客主页:Code_文晓 🥰本文专栏:数据结构与算法 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多数据结构与算法点击专栏链接查看&…

RuoYi-Vue开源项目2-前端登录验证码生成过程分析

前端登录验证码实现过程 生成过程分析 生成过程分析 验证码的生成过程简单概括为:前端登录页面加载时,向后端发送一个请求,返回验证码图片给前端页面展示 前端页面加载触发代码: import { getCodeImg } from "/api/login&q…

HarmonyOS(鸿蒙)ArkUI组件

方舟开发框架(简称ArkUI)为HarmonyOS应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件),以及实时界面预览工具等,可以支持开发者进行可视化界面…

jar读取目录配置、打包jar后无法获取目录下的配置

jar读取目录配置、打包jar后无法获取目录下的配置 jar读取目录配置、打包jar后无法获取目录下的配置。java打成jar包后获取不到配置文件路径。解决项目打成jar包上线无法读取配置文件。打包jar后无法读取resource下的配置文件 场景 需要读取 src/main/resources/mapper下的所…

Windows系统部署GoLand结合内网穿透实现SSH远程Linux服务器开发调试

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-HIOuHATnug3qMHzx {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

es 聚合操作(二)

书接上文,示例数据在上一篇,这里就不展示了 一、Pipeline Aggregation 支持对聚合分析的结果,再次进行聚合分析。 Pipeline 的分析结果会输出到原结果中,根据位置的不同,分为两类: Sibling - 结果和现有…

③【Docker】Docker部署Nginx

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ ③【Docker】Docker部署Nginx docker拉取nginx…

聚焦两会:数字化再加速,VR全景助力制造业转型

近年来,随着信息技术、人工智能、VR虚拟现实等新兴技术的不断涌现,数字化正日益成为推动当今经济发展的新驱动力。在不久前的两会上,数字化经济和创新技术再度成为热门话题: 国务院总理李强作政府工作报告: 要深入推…

【Session】Tomcat Session 集群

设备 nginx:192.168.67.11 tomcat1:192.168.67.12 tomcat2:192.168.67.13安装nginx (192.168.67.11) #关闭防火墙和安全机制 [roottest1 ~]# systemctl stop firewalld [roottest1 ~]# setenforce 0#安装epel源 [ro…

Postman接口做关联测试的方法步骤

应用场景 假设下一个接口登录需要上一个接口的返回值,例如请求需要先登录获取到token,下一个请求要携带对应的token才能进行请求 方法:通过设置全局变量/环境变量 方法一:设置全局变量 1.先请求登录接口,请求成功之后…

HarmonyOS ArkTS 开发基础/语言

目录 一、ArkUI (方舟开发框架) 概述 1.1 基本概念 1.2 两种开发范式 1.3 不同应用类型支持的开发范式 二、ArkTS 声明式开发范式 2.1 开发能力 2.2 整体架构 三、ArkTS 基础类型 3.1 Any 类型 3.2 数字类型 3.3 字符串类型 3.4 布尔类型 3.5 联合类型 3.6 数组类…