Java核心技术【二十一】Java的I/O流处理:文件的读写操作

Java的I/O流处理:文件读写操作

【创作】 不易,【点赞】 是情义,【关注】 是动力,【收藏】 是回忆。
示例代码地址:https://gitee.com/code-in-java/csdn-blog.git

在Java编程中,输入/输出(I/O)流是处理设备输入输出的一种机制,它广泛应用于文件读写、网络通信等领域。对于初学者来说,理解并掌握Java的I/O流处理是非常关键的。本文将详细讲解Java的I/O流,特别是文件读写操作部分,并通过示例代码帮助大家理解相关概念、原理及应用场景。

一、Java I/O流概述

Java的I/O流是一组用于读写数据的类,它们位于java.io包中。根据处理数据类型的不同,Java的I/O流分为字节流和字符流。

  • 字节流:以字节为单位处理数据,主要用于处理二进制文件,如图片、音频、视频等。字节流的抽象基类为InputStreamOutputStream
  • 字符流:以字符为单位处理数据,主要用于处理文本文件。字符流的抽象基类为ReaderWriter

二、文件读写操作

文件读写是I/O流应用中最常见的场景之一。Java提供了FileInputStreamFileOutputStreamFileReaderFileWriter等类来实现文件的读写操作。

1. 使用字节流写入文件

import java.io.FileOutputStream;  
import java.io.IOException;  public class FileWriteExample {  public static void main(String[] args) {  String data = "Hello, Java I/O!";  try (FileOutputStream fos = new FileOutputStream("example.txt")) {  fos.write(data.getBytes());  System.out.println("文件写入成功!");  } catch (IOException e) {  e.printStackTrace();  }  }  
}
  • try (FileOutputStream fos = new FileOutputStream(“example.txt”)) 是一个try-with-resources语句,它自动管理资源。try块结束时,fos将自动关闭,无需显式调用fos.close()
  • FileOutputStream fos = new FileOutputStream(“example.txt”) 创建一个FileOutputStream对象fos,用于向文件example.txt写入数据。如果文件不存在,它将被创建。
  • fos.write(data.getBytes()) 将字符串data转换为字节数组,并使用fos对象将其写入文件。
  • catch (IOException e) 捕获并处理IOException异常,e.printStackTrace() 在控制台上打印异常堆栈跟踪,这有助于调试和识别问题。

代码运行结果:
生成了一个名为 example.txt 的文件
在这里插入图片描述

2. 使用字节流读取文件**

import java.io.FileInputStream;  
import java.io.IOException;  public class FileReadExample {  public static void main(String[] args) {  try (FileInputStream fis = new FileInputStream("example.txt")) {  int content;  while ((content = fis.read()) != -1) {  System.out.print((char) content);  }  } catch (IOException e) {  e.printStackTrace();  }  }  
}

使用FileInputStream在Java中进行文件读取操作,并利用try-with-resources语句自动管理资源。同时,它还展示了如何使用while循环逐个字节地读取文件内容,并将其打印到控制台上。

代码运行结果:
读取了 example.txt 文件的内容

Hello, Java I/O!

3. 使用字符流写入文件

import java.io.FileWriter;  
import java.io.IOException;  public class FileWriterExample {  public static void main(String[] args) {  String data = "Hello, Java I/O with FileWriter!";  try (FileWriter writer = new FileWriter("example2.txt")) {  writer.write(data);  System.out.println("文件写入成功!");  } catch (IOException e) {  e.printStackTrace();  }  }  
}

以上代码演示了如何使用 FileWriter 在Java中将字符串 “Hello, Java I/O with FileWriter!” 写入到名为 example2.txt 的文件中,并处理可能发生的IOException异常。

代码运行结果:
生成了一个名为 example2.txt 的文件
在这里插入图片描述

4. 使用字符流读取文件

import java.io.FileReader;  
import java.io.IOException;  public class FileReaderExample {  public static void main(String[] args) {  try (FileReader reader = new FileReader("example2.txt")) {  int content;  while ((content = reader.read()) != -1) {  System.out.print((char) content);  }  } catch (IOException e) {  e.printStackTrace();  }  }  
}

以上代码演示了如何使用FileReader在Java中逐个字符地读取名为example2.txt的文件内容,并将其打印到控制台上,同时处理可能发生的IOException异常。

代码运行结果:
读取了example2.txt 的内容

Hello, Java I/O with FileWriter!

三、结束语

Java的I/O流处理是Java编程中的一项重要技术,它提供了丰富的API来支持各种输入输出操作。文件读写操作是I/O流应用中的基础,掌握字节流和字符流的使用是进行更复杂I/O操作的前提。希望本文能够帮助初学者更好地理解Java的I/O流处理,并在实践中灵活应用。

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

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

相关文章

PyTorch实现BERT预训练模型转化指南

huggingface官方的介绍: https://huggingface.co/transformers/converting_tensorflow_models.html 直接用命令行 把箭头处路径改为自己放原有tf版本预训练模型的路径 回车后会有一大堆提示,然后发现路径下多了一个bin文件,加上原本的config…

顺序结构 ( 六 ) —— 顺序结构实例 【互三互三】

🚀欢迎互三👉:程序猿方梓燚 💎💎🚀所属专栏:C教程💎 🚀关注博主,后期持续更新系列文章 🚀如果有错误感谢请大家批评指出,及时修改 &am…

iNavFlight飞控固件学习-1《开发环境搭建》

目录 文章目录 目录摘要1.官网2.形成Linux开发环境工具2.1 简介2.2 相关工具2.2.1 Ubuntu / Debian系统配置命令2.2.2 Fedora系统配置命令2.2.3 Fedora系统配置命令 2.3 克隆存储库2.4 构建工具2.5 使用cmake2.6 构建固件2.7 清除2.8 cmake 缓存维护2.9 编译通过ninja2.10 更新…

红酒与未来科技:传统与创新的碰撞

在岁月的长河中,红酒以其深邃的色泽、丰富的口感和不同的文化魅力,成为人类文明中的一颗璀璨明珠。而未来科技,则以其迅猛的发展速度和无限的可能性,领着人类走向一个崭新的时代。当红酒与未来科技相遇,一场传统与创新…

ADI新型充电器解决方案可实现电池堆电压和充电效率

就目前而言,这可能是生活中zui常见的问题了。世纪之交,电池(尤其是基于锂离子的电池)成本的降低和性能的提高,推动了电池供电的储能和便携式设备的稳步增长。此外,超级电容器由于具有独特的性质&#xff0c…

骨传导耳机最热门好用款推荐,选购骨传导耳机前不能忽略的六大细节

如今的社会在耳机种类方面可以说是越来越多,于是很多人在挑选的时候往往选择不到适合自己的一款耳机,尤其是在近些年来席卷耳机市场的骨传导耳机,开放耳道的设计在很多时候佩戴无异于是更加的适合,正好小编这边对于比较热门的几款…

社交App iOS审核中的4.3问题:深入分析与解决策略

社交App审核中的4.3问题:深入分析与解决策略 在iOS应用开发和审核过程中,开发者经常会遇到苹果审核4.3问题。这一问题往往涉及应用的设计和内容重复性,导致应用被拒绝上架。为了帮助开发者更好地理解和解决这一问题,本文将对4.3问…

动漫3d模型设计需要注意什么?---模大狮模型网

设计动漫3D模型时,有几个方面需要注意: 保持角色风格一致性: 动漫通常有独特的风格和美学,设计时要确保模型与所代表的角色或作品的整体风格相符。注意保持线条和比例的一致性,使模型能够忠实地呈现原作的特点。 注重…

springboot餐饮管理系统-计算机毕业设计源码43667

摘 要 在信息化、数字化的时代背景下,餐饮行业面临着前所未有的挑战与机遇。为了提高运营效率、优化顾客体验,餐饮企业亟需一套高效、稳定且灵活的管理系统来支撑其日常运营。基于Spring Boot的餐饮管理系统应运而生,成为餐饮行业数字化转型的…

Python基础教学之一:入门篇——迈入编程世界的第一步

Python基础教学之一:入门篇——迈入编程世界的第一步 一、Python简介:历史与现状 Python,一种解释型、高级和通用的编程语言,由Guido van Rossum在1989年圣诞节期间创造,并于1991年首次发布。设计哲学强调代码的可读性…

论文降痕降重全攻略:从技巧到工具,助你轻松应对学术挑战

AIGC降重工具:快速降低论文查重率 高查重率是许多毕业生的困扰。通常,高查重率源于过度引用未经修改的参考资料和格式错误。传统的降重方法,如修改文本和增添原创内容,虽必要但耗时且成效不一。 鉴于此,应用AI工具进…

【企业级监控】源码部署Zabbix与监控主机

Zabbix企业级分布式监控 文章目录 Zabbix企业级分布式监控资源列表基础环境一、LNMP环境搭建(在zbx主机上)1.1、配置Yum仓库1.1.1、下载阿里云的仓库文件1.2.2、安装PHP7的仓库1.2.3、生成Mariadb10.11的仓库文件1.2.4、快速重建Yum缓存 1.2、安装PHP7.4…

请求取消(多种)

XMLHttpRequest XMLHttpRequest 可以使用 abort() 方法来实现请求取消。 const xhr new XMLHttpRequest();xhr.open(GET, http://localhost:3000/api/txt);xhr.timeout 2;xhr.ontimeout function () {xhr.abort();console.error(请求超时,已中断);};xhr.onload …

shell脚本之for循环

一、循环中的常见语句 1.1 echo 打印 -n :表示不换行输出-e :输出转义字符 \b :相当于退格键(backspace)\n :换行,相当于回车\f :换行,换行后的新行的开头连着上一行的行尾\t :插入…

Oracle 23ai 中的重要新特性 VECTOR 数据类型

Oracle 23ai 中的 VECTOR 数据类型是 Oracle 数据库在 AI 领域的一个重要新特性,它允许用户以向量的形式存储数据,并在这些向量的基础上进行高效的搜索和分析。以下是对 Oracle 23ai VECTOR 数据类型的详细解析: 参考官方文档地址 https://d…

【Ubuntu-18.04.6 LTS (Bionic Beaver)】串口无法root登录解决方案

root用户无法再窗口登录 用户界面登录提示 soory that didnot work 解决方案 GDM 配置 /etc/gdm3/custom.conf 中增加或删除注释 [security] AllowRoottrue重启服务 service gdm restart确认 PAM 配置 GDM 使用 PAM 进行认证,可能 PAM 配置中限制了 root 登录…

GitHub网页打开慢的解决办法

有时候看资料絮叨github网页打不开,经百度后,发下下面的方法有效。 1)获取github官网ip 我们首先要获取github官网的ip地址,方法就是打开cmd,然后ping 找到github的地址:20.205.243.166 2)配…

体验升级!贵州“森林之城”携苏州金龙新V系谱写高端旅运新篇章

自今年出台文旅“四免一多一减”方案以来,贵州省围绕旅游资源,着力打造亮点,不断提升产品供给水平,旅游市场持续火爆。近日,贵州森林之城旅运公司从苏州金龙批量采购50座海格新V系豪华大巴,为贵州高端旅游市…

域名系统DNS的工作原理和服务搭建

文章目录 域名解析和DNSDNS概念 DNS服务工作原理递归查询迭代查询递归和迭代的区别DNS缓存 DNS服务器的安装whoisDNS软件bind DNS主服务器实现1.在主配置文件中定义区域2.定义区域解析库文件各种资源类型解析库记录定义项 3.配置识别区域库文件4.重启named服务启用DNS客户端缓存…

Java--static详解

1.static静态的意义,加在属性面前就为静态属性;加在方法面前就为静态方法 2.如图,定义了一个静态属性age,一个非静态属性score; 输出语句一共四句,其中第三句报错,由于静态和非静态的区别&…