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 更新…

js 日期比较大小

在JavaScript中,比较日期大小通常涉及将日期转换为时间戳(自1970年1月1日以来的毫秒数),然后比较这些时间戳。这是因为直接比较两个Date对象可能不会按预期工作,特别是如果你试图了解哪个日期在另一个日期之前或之后。…

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

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

2024.07.03校招 实习 内推 面经

绿*泡*泡VX: neituijunsir 交流*裙 ,内推/实习/校招汇总表格 1、提前批 | 中国兵器工业集团第二〇二研究所 | 提前批/招/聘暨/暑期/开放日 提前批 | 中国兵器工业集团第二〇二研究所 | 提前批招聘暨暑期开放日 2、夏令营 | 2024年南网数字集团“未来…

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

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

oppo25届秋招,快手25届技术人才专项计划内推

oppo25届秋招,快手25届技术人才专项计划内推 ①【OPPO】25届秋招开启! 内推简历优先筛选! 👉岗位类别:AI/算法类,软件类,硬件类,工程技术类,品牌策划类,设计类…

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

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

社交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 :插入…

编程用什么轴体比较好用:全面解析四种轴体的优劣与应用

编程用什么轴体比较好用:全面解析四种轴体的优劣与应用 在编程的世界里,选择一款合适的机械键盘轴体,不仅能提升工作效率,更能带来舒适的打字体验。然而,面对市场上琳琅满目的轴体类型,究竟该如何选择呢&a…

a+=1和a=a+1的区别

文章目录 a1 和a a1的区别一、实例代码二、代码解释三、总结 a1 和a a1的区别 一、实例代码 public class Test {public static void main(String[] args) {byte a 10; // a a 1; // a (byte) (a 1);a 1;System.out.println(a);} }上面的对变量a进行加一操作时&a…

[Linux安全运维] Nginx相关

Nginx相关 1. 概述 Nginx是一种Web服务器,其具有高并发、高负荷的能力,具有以下优点: 稳定、系统资源消耗少、占用内存较少。软件安装包小且定制化强。具有高并发能力,可处理30000-50000个请求。 Nginx作为静态页面的web服务器…