37_io_关闭流
import java.io.{File, FileNotFoundException, FileReader, IOException} // try-catch-finally 确保流能正常关闭 /* * 健壮性说明 * 1. 确保在读取文件过程中发生错误(例如IO阻塞)时,能确保 流被关闭 * 2. file为null,不报空指针异常 * * */ object FileWriterTest extends App { var reader: FileReader = _ try { //1. 实例化File类对象,指明要操作的对象 val file: File = new File("sparkcore1/src/main/data/word.txt") println(file.exists()) //2. 初始化FileReader reader = new FileReader(file) //3. 读取数据 // read方法 按指定编码读取一个字符,并返回字符对应的int值,当没有数据时,返回-1 // 一个字符一个字符的读取 // 如果这块遇到错误,流将无法关闭,可能造成内存泄漏 var i = reader.read() while (i != -1) { print(i.toChar) i = reader.read() //1/0 } } catch { case e: IOException => e.printStackTrace() case e1: FileNotFoundException => println("未找到文件,请创建") } finally { //当 file 不存在时,reader为null,会报空指针异常 //4. 关闭流!!! if (reader != null) { try { println("完成") reader.close() } catch { case e: FileNotFoundException => e.printStackTrace() } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界