死磕 IO 流?你都磕对地方了么

在日常开发中,我们经常会接触到 io 流,例如在处理文件上传下载、数据传输以及设计模式等方面。io 流是这些操作的基础,因此今天我们将深入探讨 java 中 io 流的相关知识点。

本文将涵盖以下主要内容:

文件对象流概述字节流与字符流文件对象与文件路径Java 标准库

java.io

提供了

File

对象,用于操作文件和目录。通过

File

对象,我们可以将文件和目录封装成对象。构造

File

对象时,需要提供文件或目录的路径名,常用的构造方法如下:

方法 描述

File(String pathName)通过给定的路径名字符串创建新实例File(String parent, String child)从父路径名字符串和子路径名字符串创建新实例File(File parent, String child)从父抽象路径名和子路径名字符串创建新实例

死磕 IO 流?你都磕对地方了么

在创建

File

对象时,可以使用绝对路径或相对路径。相对路径是以当前文件所在位置为参考点,常用的符号有

.

(当前目录)和

..

(上一级目录)。例如,如果当前目录是

/home/cunyu1943/data

,那么

.

表示该目录,而

..

表示

/home/cunyu1943

目录。绝对路径可以分为本地绝对路径和网络绝对路径。本地绝对路径是以根目录为参考,例如 Windows 系统中的

D:SoftwaresTyporaTypora.exe

或 Unix 系统中的

/home/cunyu1943/IO.md

。为了在不同系统间兼容,建议使用

/

作为路径分隔符。网络绝对路径则包含网址,如

https://cunyu1943.site/index.html

死磕 IO 流?你都磕对地方了么

有了

File

对象后,我们可以进行文件和目录的创建与删除操作。以下是

File

类中常用的创建和删除方法:

返回值 方法 描述

booleancreateNewFile()当文件不存在时创建新空文件;存在时创建失败booleanmkdir()创建指定名称的目录booleanmkdirs()创建多级目录,包括所有必要但不存在的父目录booleandelete()删除指定的文件或目录(目录需为空才能删除)

死磕 IO 流?你都磕对地方了么

在创建文件时,使用

createNewFile()

方法,而创建目录时使用

mkdir()

mkdirs()

方法。注意区分这些方法的使用,否则可能导致错误,例如将文件路径当成目录路径处理。删除目录时,如果目录非空,则需要先删除目录中的内容,然后才能删除目录。

通过

File

对象,我们还可以获取文件的相关属性,常用方法如下:

返回值 方法 描述

longlength()返回文件的字节大小booleancanRead()检查文件是否可读booleancanWrite()检查文件是否可写booleancanExecute()检查文件是否可执行

死磕 IO 流?你都磕对地方了么

File

对象既可以表示文件,也可以表示目录。以下是用于判断和获取文件及目录信息的常用方法:

返回值 方法 描述

booleanisFile()检查是否为普通文件booleanisDirectory()检查是否为目录booleanexists()检查文件或目录是否存在StringgetPath()返回路径字符串StringgetAbsolutePath()返回绝对路径名字符串StringgetName()返回文件或目录的名称String[]list()返回目录下的文件和目录名列表File[]listFiles()返回目录下的文件和目录对象列表

死磕 IO 流?你都磕对地方了么

假设我们需要遍历 Windows 系统中 C 盘的 Windows 目录,并列出其中的文件名和文件大小,而不列出目录名,可以使用以下代码:

死磕 IO 流?你都磕对地方了么

流是数据的组合,用于数据交互。Java 中,数据的输入和输出都是通过流来实现的。根据数据流的方向,流可以分为输入流和输出流;根据处理的数据单位,流可以分为字节流和字符流。两者的关系如下表所示:

字节流 字符流

输入流InputStreamReader输出流OutputStreamWriter

选择字节流还是字符流的原则是:如果数据可以通过 Windows 自带的记事本软件打开并读取内容,则使用字符流,否则使用字节流。如果不确定,默认选择字节流。

死磕 IO 流?你都磕对地方了么

InputStream

是所有字节输入流的父类。我们以

FileInputStream

为例,它用于从文件中读取数据到内存中。常用方法如下:

返回值 方法 描述

intavailable()返回可读取的字节数估计值voidclose()关闭输入流并释放相关资源intread(byte[] b)从输入流读取一些字节并存储到缓冲区 b

死磕 IO 流?你都磕对地方了么

OutputStream

是所有输出字节流的父类。我们以

FileOutputStream

为例,它用于将数据从内存写入到文件中。常用方法如下:

返回值 方法 描述

voidwrite(byte[] b)将 b.length 个字节写入文件输出流voidclose()关闭文件输出流并释放相关资源

死磕 IO 流?你都磕对地方了么

在使用字节流写入数据时,实现换行可以通过写入换行符的字节数组实现。不同系统的换行符不同:Windows 使用


macOS 使用


,Linux 使用


。实现追加写入可以通过

FileOutputStream

的构造方法

public FileOutputStream(String name, boolean append)

来实现,当

append

true

时,表示追加写入。

死磕 IO 流?你都磕对地方了么

字符串的编码和解码方法如下:

编码:

byte[] getBytes()

:使用平台默认字符集将字符串编码为字节数组。

byte[] getBytes(String charsetName)

:使用指定字符集将字符串编码为字节数组。

解码:

String(byte[] bytes)

:使用平台默认字符集解码字节数组为字符串。

String(byte[] bytes, String charsetName)

:使用指定字符集解码字节数组为字符串。

死磕 IO 流?你都磕对地方了么

Writer

用于将基于字符的数据写入数据源。我们以

FileWriter

为例,其常用方法如下:

返回值 方法 描述

voidclose()先刷新再关闭流,不能再写数据voidflush()刷新流,可以继续写数据voidnewLine()写入行分隔符voidwrite()写入字符或字符串

死磕 IO 流?你都磕对地方了么

Reader

用于从数据源读取基于字符的数据。我们以

FileReader

为例,其常用方法如下:

返回值 方法 描述

voidclose()关闭流并释放相关资源intread()读取一个字符StringreadLine()读一行文字booleanready()检查流是否准备好被读取

死磕 IO 流?你都磕对地方了么

关于 IO 流的知识点到此结束,希望大家能够掌握并应用这些内容。如果本文对你有帮助,请点赞关注。如果有任何遗漏或错误,欢迎在评论区留言讨论!

以上就是死磕 IO 流?你都磕对地方了么的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/187714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月1日 11:42:09
下一篇 2025年11月1日 11:43:26

相关推荐

  • HTML怎么设置文本字体粗细?font-weight的取值技巧

    要设置html文本字体粗细,主要使用css的font-weight属性。1. 该属性支持关键字值如normal(400)、bold(700)、bolder和lighter;2. 同时也支持从100到900的数值,分别对应thin至black的不同粗细等级;3. 可通过html内联样式或css样式表进…

    2025年12月22日 好文分享
    000
  • 如何为HTML表格添加错误处理?有哪些调试方法?

    <p&gt;html表格本身无内置错误处理机制,需在数据获取、验证与提交环节手动实现。1. 数据获取时使用promise.catch()或try…catch捕获异常并提示用户;2. 数据填充前进行前后端验证,确保格式正确并反馈错误信息;3. 提交时处理服务器响应,显示成功或…

    好文分享 2025年12月22日
    000
  • HTML表格如何实现数据的折叠展开?有哪些方式?

    1.纯css方案使用details和summary标签实现折叠展开,无需javascript,但兼容性较差;2.javascript通过切换类名控制显示隐藏,灵活且兼容性好,但需编写脚本;3.借助jquery等库可简化代码,但依赖外部框架。优化用户体验可通过添加动画、状态保持、无障碍支持等方式实现。…

    2025年12月22日 好文分享
    000
  • 如何从数据库动态生成HTML表格?后端如何实现?

    动态生成html表格的核心步骤是:1. 从数据库取数据;2. 遍历数据;3. 拼接html字符串;4. 返回给前端。具体实现中,使用python的flask框架和mysql数据库,通过连接数据库、执行查询、获取结果和列名,并将数据传递给html模板生成表格;为优化大量数据导致的性能问题,可采用分页查…

    2025年12月22日 好文分享
    000
  • html中怎么调整表单单选框样式 radio美化教程

    在html中调整单选框样式需通过css隐藏原生控件并创建自定义外观,具体步骤如下:1. 使用appearance: none;或display: none;隐藏默认单选框;2. 利用::before或::after伪元素构建自定义样式,包括尺寸、颜色和边框;3. 通过:checked伪类实现选中状态…

    2025年12月22日 好文分享
    000
  • HTML怎么设置缩放动画?

    html本身不能直接设置缩放动画,需借助css实现;主要通过transform: scale()配合transition或animation属性完成。1. 使用css transition可实现简单一次性缩放动画,如鼠标悬停时放大元素;2. 使用css animation可创建复杂循环缩放动画,通过…

    2025年12月22日 好文分享
    000
  • html中怎么添加动画效果 css动画制作方法

    在html中添加动画效果主要依赖css实现,主要有两种方式:1. css transitions适用于简单的状态变化,通过定义初始和目标状态以及过渡属性实现平滑变化;2. css animations适合复杂多步骤动画,通过@keyframes定义关键帧并应用animation属性控制。transi…

    2025年12月22日 好文分享
    000
  • html中怎么调整图片透明度 图片透明效果教程

    调整html中图片透明度的核心方法是使用css的opacity属性。1. 使用opacity属性设置图片透明度,取值范围为0.0(完全透明)到1.0(完全不透明),例如opacity: 0.5使图片半透明;2. 为了兼容旧版ie浏览器,可添加filter: alpha(opacity=50);3. …

    2025年12月22日 好文分享
    000
  • html页面怎么设置背景色 背景色更改操作流程

    设置html页面背景色主要通过css实现,包含三种方法:1.内联样式直接在标签添加style属性;2.内部样式表在head中用style标签定义;3.外部样式表通过link标签引入独立css文件。颜色选择应考虑可读性与设计风格,浅色适合阅读,深色现代感强,可用adobe color生成配色方案,并通…

    2025年12月22日 好文分享
    000
  • 如何为HTML表格添加日志记录?有哪些实现方法?

    { “timestamp”: “2023-10-27T10:30:00Z”, “userId”: “user123”, “tableId”: “product_list”, “actionType”: “edit_cell”, “rowIndex”: 5, “columnId”: “price”, …

    2025年12月22日 好文分享
    000
  • html中怎么设置文本居中 文字居中布局方法

    在html中实现文本居中的方法有多种,选择取决于具体场景和精确度需求。1. 使用text-align: center;适用于行内元素或块级元素内部文本的水平居中;2. 使用margin: 0 auto;用于具有指定宽度的块级元素的水平居中;3. 使用flexbox布局通过justify-conten…

    2025年12月22日 好文分享
    000
  • HTML怎么实现响应式?meta标签与媒体查询设置

    你的网站在手机上显示一团糟,是因为缺少viewport meta标签。添加可解决此问题。响应式设计的核心在于使用媒体查询(@media)根据设备特性应用不同样式,例如通过max-width、min-width定义屏幕区间;同时,媒体查询还可依据像素密度、屏幕方向等条件调整样式。此外,响应式图片可通过…

    2025年12月22日 好文分享
    000
  • html怎么设置文本背景 文字背景色添加技巧

    设置html文本背景主要通过css实现,推荐使用外部样式表管理样式。1. 使用内联样式可在标签内添加style属性,如 ;2. 使用内部样式表在 中定义标签,适用于单个文件;3. 使用外部css文件可分离样式与结构,便于多文件复用。此外,还可使用background-image设置背景图,rgba(…

    2025年12月22日 好文分享
    000
  • HTML怎么添加折叠面板?

    要实现折叠面板,需结合html、css和javascript。1. html提供结构,包含触发器和内容区域;2. css控制初始隐藏和样式,使用.display: none和类切换;3. javascript添加点击事件,切换类以显示/隐藏内容并旋转箭头。纯css方案可用:checked伪类和隐藏的…

    2025年12月22日 好文分享
    000
  • HTML怎么设置弹窗?

    设置html弹窗需结合html结构、css样式与javascript脚本。1. 创建隐藏的html容器,通常使用 元素包含内容;2. 通过css控制样式及显示/隐藏状态,设置position、z-index等属性确保弹窗覆盖页面;3. 使用javascript监听用户事件(如点击)触发弹窗显示或关闭…

    2025年12月22日 好文分享
    000
  • html中怎么设置文本特效 文字动画效果实现

    在html中设置文本特效和文字动画效果,主要依赖css3的animation和transform属性,并可结合javascript实现更复杂的效果。1. 创建html结构,使用如 或元素包裹文本;2. 使用@keyframes定义动画关键帧,通过animation属性将动画应用到元素;3. 结合tr…

    2025年12月22日 好文分享
    000
  • html中怎么调整行高 文本行高设置指南

    调整html中文本行高的核心方法是使用css的line-height属性。1. line-height可接受数字、长度单位(px, em, rem)、百分比或normal值,推荐使用数字形式以保持良好的继承性;2. 应将line-height应用在包含文本的父元素上,如 标签,以便子元素继承并统一排…

    2025年12月22日 好文分享
    000
  • html怎么给下拉框添加搜索功能

    html原生的标签不支持搜索功能,需通过javascript和css实现增强。具体步骤包括:1.隐藏原生select元素;2.用input和div/ul构建自定义组件;3.用javascript读取选项数据并监听输入事件进行过滤;4.动态更新下拉列表内容;5.处理选项点击事件同步选中值;6.管理焦点…

    2025年12月22日 好文分享
    000
  • HTML怎么设置卡片布局?

    实现html卡片布局的核心方法有两种:1.使用flexbox,通过设置display: flex、flex-wrap: wrap和justify-content: space-around等属性控制卡片的一维排列;2.使用grid,通过grid-template-columns: repeat(au…

    2025年12月22日 好文分享
    000
  • html中href标签的作用 超链接href属性的3个核心功能

    href属性在html中用于指定超链接的目标url或锚点,其核心功能包括:1.导航,允许用户跳转到其他页面或同一页面不同部分;2.资源下载,用户可直接从网页下载文件;3.邮件链接,点击后打开邮件客户端并自动填写收件人地址。使用href属性时,应确保链接文本清晰,避免模糊描述,并根据实际情况优化链接功…

    2025年12月22日
    000

发表回复

登录后才能评论
关注微信