新闻详情

新闻详情

首页 / 资讯中心 / 详情

实验五 输入输出流

发布时间:2026/9/10 9:43:45来源:尧图网络
实验五 输入输出流
一、实验概述本次上机实验围绕 Java 输入输出字符流完成举重成绩自动统计工具分为两个核心类Fenxi.java负责文本数字提取求和AnalysisResult.java完成文件读取、成绩计算、结果追加写入文件全流程。通过缓冲字符流实现文本文件高效读写结合正则与字符串分割完成成绩数值解析完整落地文件 IO 业务场景。二、整体解题思路1. 需求拆解读取本地score.txt举重原始成绩文本逐行处理提取每行文字中所有数字支持小数成绩自动累加计算总成绩原始文本拼接总成绩后控制台打印将处理后的完整数据追加写入新文件socreAnalysis.txt多次运行不覆盖历史数据捕获 IO 读写异常保证程序健壮性。2. 分层实现思路1数值解析层Fenxi 工具类正则表达式[^0123456789.]匹配所有非数字、非小数点字符将所有无关字符统一替换为分隔符*使用StringTokenizer按分隔符拆分纯数字字符串循环转换为 double 类型累加返回该行总成绩。2文件 IO 业务层AnalysisResult 主类底层文件流FileReader读取源文件FileWriter(file,true)开启追加模式输出缓冲包装用BufferedReader、BufferedWriter封装底层文件流提供readLine()按行读取、newLine()换行等便捷方法循环逐行读取文件调用工具类计算总分拼接文本后输出控制台 写入目标文件流关闭读写完成手动关闭缓冲流释放资源异常捕获捕获IOException打印异常信息避免程序直接崩溃。3. 填空逻辑推导原题 4 处代码填空【代码 1】new FileWriter(fWrite, true)第二个参数 true 代表追加写入满足题目追加要求【代码 2】new BufferedWriter(out)缓冲输出流必须接收 Writer 子类对象做底层流【代码 3】new FileReader(fRead)文件字符输入流继承自 Reader 抽象类【代码 4】new BufferedReader(in)缓冲输入流包装 Reader实现按行读取。三、完整示例代码1. Fenxi.java数字解析工具类import java.util.*; public class Fenxi { public static double getTotalScore(String s) { //匹配所有非数字字符 String regex[^0123456789.]; String digitMesss.replaceAll(regex,*); StringTokenizer fenxi new StringTokenizer(digitMess,*); double totalScore0; while(fenxi.hasMoreTokens()){ double score Double.parseDouble(fenxi.nextToken()); totalScore totalScorescore; } return totalScore; } }2. AnalysisResult.java文件读写主程序import java.io.*; import java.util.*; public class AnalysisResult { public static void main(String args[]) { File fRead new File(score.txt); File fWrite new File(socreAnalysis.txt); try { //【代码1】追加模式文件字符输出流 Writer out new FileWriter(fWrite, true); //【代码2】缓冲输出流包装 BufferedWriter bufferWrite new BufferedWriter(out); //【代码3】文件字符输入流 Reader in new FileReader(fRead); //【代码4】缓冲输入流包装 BufferedReader bufferRead new BufferedReader(in); String str null; while((strbufferRead.readLine())!null) { double totalScoreFenxi.getTotalScore(str); str str 总成绩:totalScore; System.out.println(str); bufferWrite.write(str); bufferWrite.newLine(); } //关闭流 bufferRead.close(); bufferWrite.close(); }catch(IOException e) { System.out.println(e.toString()); } } }3.score.txt4.运行结果四、程序创新点通用数字提取工具解耦业务逻辑将数字提取、求和逻辑封装独立工具类Fenxi和文件 IO 操作完全分离后续任何文本数字统计场景可直接复用符合单一职责设计思想。兼容整数 / 小数成绩修复原代码正则缺陷原题原始正则仅匹配纯数字未包含小数点会导致小数拆分错误优化正则[^0123456789.]完美适配带小数点的举重成绩覆盖真实业务数据。追加写入模式支持多次迭代统计使用FileWriter(file,true)开启文件追加重复运行程序不会覆盖已有统计结果适合分批录入成绩、持续汇总的使用场景。缓冲流分层包装兼顾性能与易用性底层使用基础文件流操作磁盘上层缓冲流封装readLine()、newLine()等便捷 API相比原生单字符读写大幅提升大文本文件读写性能。文本无关性解析不限制文本格式无需固定文本分隔符无论文字、符号如何混杂均可自动过滤所有非数字内容提取分数不局限于举重成绩单可拓展到成绩单、账单、日志等数字提取场景。五、实验心得体会1. 技术知识点收获分清字节流与字符流适用场景处理中文文本文件优先使用Reader/Writer字符流避免中文乱码图片、视频等二进制文件才使用InputStream/OutputStream字节流。缓冲流是 IO 优化核心基础文件流单次读写效率极低BufferedReader/BufferedWriter内置缓冲区批量读写磁盘处理多行文本必须使用。文件追加写入关键FileWriter第二个布尔参数控制覆盖 / 追加模式日常日志、统计记录业务几乎都使用追加模式。正则在文本清洗的实用价值面对混杂文字和数字的不规则文本正则可以快速过滤无关字符简化数据提取流程省去复杂字符串截取逻辑。IO 资源释放规范文件流属于操作系统资源使用完毕必须手动close()关闭否则会占用文件句柄导致文件无法修改、删除。2. 踩坑总结最初未注意正则缺失小数点带小数成绩会解析报错修正正则后程序才能正常运行忘记在写入文件后调用newLine()所有输出内容会挤在同一行可读性极差流关闭顺序错误必须先关闭上层缓冲流再关闭底层文件流缓冲流关闭时会自动刷新缓冲区数据到磁盘未捕获 IO 异常直接编译报错所有文件读写操作都属于受检异常必须搭配try-catch或抛出异常。3. 拓展思考本次程序还有优化空间可以使用 try-with-resources 语法自动关闭流省去手动close()增加文件不存在判断提前提示用户创建score.txt封装配置文件名常量方便修改文件路径增加总分排序、平均分统计等拓展功能。通过本次 IO 实验我理解了 Java 文件操作的分层设计思想底层基础流负责硬件交互上层装饰流拓展功能这种装饰者模式也为后续学习 IO 高级用法打下基础。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

LogicFlow Skill:智能流程图编辑与代码联动实践 2026/9/10 20:27:03

LogicFlow Skill:智能流程图编辑与代码联动实践

1. LogicFlow Skill 核心功能解析LogicFlow Skill 是一款基于 LogicFlow 流程引擎的扩展插件,专门用于增强流程图编辑器的智能化操作能力。作为一款深度集成在 Cursor IDE 中的工具,它主要解决了传统流程图工具存在的三个痛点:手动绘制效率低…

阅读更多 →
一级圆柱齿轮减速器CAD制图实战:从参数计算到装配图出图全流程 2026/9/10 20:27:03

一级圆柱齿轮减速器CAD制图实战:从参数计算到装配图出图全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
注意避坑!并非所有 AI 都适合写论文,2026 导师信赖工具清单 2026/9/10 20:27:03

注意避坑!并非所有 AI 都适合写论文,2026 导师信赖工具清单

每一年毕业季,无数同学深陷论文难题:开题毫无思路、搭建框架耗费数日、初稿逻辑松散、查重标红泛滥、AI检测超标、格式反复被导师驳回。现如今市面上通用型AI工具遍地开花,但绝大多数通用大模型存在编造虚假参考文献、学术语句口语化、AI生成…

阅读更多 →
用 Azure API Management 构建 AI 网关:awesome-copilot 中的 `llm-*` 策略实战指南 2026/9/10 20:27:03

用 Azure API Management 构建 AI 网关:awesome-copilot 中的 `llm-*` 策略实战指南

用 Azure API Management 构建 AI 网关:awesome-copilot 中的 llm-* 策略实战指南 【免费下载链接】awesome-copilot Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot. 项目地址: https://…

阅读更多 →
<Skill title> 2026/9/10 20:27:03

<Skill title>

【免费下载链接】oh-my-codex OmX - Oh My codeX: Your codex is not alone. Add hooks, agent teams, HUDs, and so much more. 项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-codex Purpose What durable, codebase-specific outcome does this skill pro…

阅读更多 →
AI职业替代三阶段与人类不可替代能力解析 2026/9/10 20:24:03

AI职业替代三阶段与人类不可替代能力解析

1. 当AI从工具变成竞争对手三年前我参与开发了一套智能客服系统,当时团队的目标很明确:让人工处理那些需要情感共鸣的复杂咨询,把标准化问题交给AI。上线第一个月,客服部门的KPI提升了40%,领导在庆功宴上举杯说"这…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞