news 2026/4/17 22:18:40

【JavaEE初阶】告别小白!Java IO 流读写 + 文件操作实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【JavaEE初阶】告别小白!Java IO 流读写 + 文件操作实战

【JavaEE初阶】告别小白!Java IO 流读写 + 文件操作实战

Java IO 是 JavaEE 开发的基础核心,掌握它就能轻松处理文件读写、网络数据传输等操作。本指南针对初学者,从零开始讲解File 类文件操作IO 流读写,重点结合实战示例,帮助你快速上手。基于 Java 8+ 版本,所有代码示例均可直接运行。

为了直观理解,我们先来看 Java IO 流的类层次结构图:

1. File 类:文件和目录操作基础

java.io.File类用于表示文件或目录的路径,可以进行创建、删除、重命名、判断等操作(不涉及文件内容读写)。

常用方法

  • createNewFile():创建新文件
  • mkdir()/mkdirs():创建目录(mkdirs 可递归创建)
  • delete():删除文件或空目录
  • exists():判断是否存在
  • isFile()/isDirectory():判断是文件还是目录
  • listFiles():列出目录下所有文件

实战示例:创建目录、文件并遍历

importjava.io.File;importjava.io.IOException;publicclassFileDemo{publicstaticvoidmain(String[]args)throwsIOException{// 创建 File 对象(路径可相对或绝对)Filedir=newFile("test/dir/subdir");if(!dir.exists()){dir.mkdirs();// 递归创建目录System.out.println("目录创建成功: "+dir.getAbsolutePath());}Filefile=newFile(dir,"hello.txt");if(file.createNewFile()){System.out.println("文件创建成功: "+file.getAbsolutePath());}// 遍历目录File[]files=dir.getParentFile().listFiles();if(files!=null){for(Filef:files){System.out.println((f.isDirectory()?"目录: ":"文件: ")+f.getName());}}// 删除测试文件和目录(注释掉以保留)// file.delete();// dir.delete();}}

运行结果示例
目录创建成功: /path/to/test/dir/subdir
文件创建成功: /path/to/test/dir/subdir/hello.txt
…(列出文件)

2. IO 流基础:字节流 vs 字符流

  • 字节流(InputStream/OutputStream):处理所有类型文件(文本、图片、视频),以字节为单位。适合二进制数据。
  • 字符流(Reader/Writer):专门处理文本文件,以字符为单位(自动处理编码)。不适合非文本文件。

推荐:文本文件用字符流 + 缓冲流;非文本用字节流 + 缓冲流。

3. 字节流实战:文件复制(适合任意文件,如图片)

基本字节流(FileInputStream / FileOutputStream)

importjava.io.*;publicclassByteCopy{publicstaticvoidmain(String[]args)throwsIOException{Filesrc=newFile("src.jpg");// 源文件(图片)Filedest=newFile("dest.jpg");// 目标文件try(InputStreamis=newFileInputStream(src);OutputStreamos=newFileOutputStream(dest)){byte[]buffer=newbyte[1024];// 缓冲数组,提高效率intlen;while((len=is.read(buffer))!=-1){os.write(buffer,0,len);}}System.out.println("字节流复制完成!");}}

缓冲字节流(高效推荐)

importjava.io.*;publicclassBufferedByteCopy{publicstaticvoidmain(String[]args)throwsIOException{Filesrc=newFile("src.jpg");Filedest=newFile("dest_buffered.jpg");try(BufferedInputStreambis=newBufferedInputStream(newFileInputStream(src));BufferedOutputStreambos=newBufferedOutputStream(newFileOutputStream(dest))){byte[]buffer=newbyte[1024];intlen;while((len=bis.read(buffer))!=-1){bos.write(buffer,0,len);}}System.out.println("缓冲字节流复制完成(更快)!");}}

4. 字符流实战:文本文件读写(推荐 BufferedReader/Writer)

基本字符流(FileReader / FileWriter)

importjava.io.*;publicclassCharReadWrite{publicstaticvoidmain(String[]args)throwsIOException{try(Readerreader=newFileReader("input.txt");Writerwriter=newFileWriter("output.txt")){char[]buffer=newchar[1024];intlen;while((len=reader.read(buffer))!=-1){writer.write(buffer,0,len);}}System.out.println("字符流复制文本完成!");}}

缓冲字符流(高效 + 按行读取,强烈推荐)

importjava.io.*;publicclassBufferedCharDemo{publicstaticvoidmain(String[]args)throwsIOException{try(BufferedReaderbr=newBufferedReader(newFileReader("input.txt"));BufferedWriterbw=newBufferedWriter(newFileWriter("output_buffered.txt"))){Stringline;while((line=br.readLine())!=null){bw.write(line);bw.newLine();// 换行}}System.out.println("缓冲字符流按行复制完成(最常用)!");}}

注意:字符流适合纯文本,避免乱码。写入后记得flush()或关闭流。

5. 最佳实践与注意事项

  • 始终使用 try-with-resources:自动关闭流,避免资源泄漏。
  • 缓冲流优先:大幅提升性能(减少磁盘 IO)。
  • 异常处理:IO 操作必抛 IOException。
  • Java 7+ NIO 简介:对于高并发,推荐java.nio(非阻塞、通道+缓冲区),但初阶先掌握传统 IO。
  • 常见错误:忘记关闭流、用字符流复制图片导致损坏。

总结与进阶

通过这些实战,你已掌握 Java IO 的核心:File 操作 + 字节/字符流读写 + 文件复制。练习建议:实现一个“文件拷贝工具”支持拖拽路径。

进一步学习:序列化(ObjectInput/OutputStream)、NIO.2(Paths/Files)、网络 IO(Socket)。

多敲代码,实战出真知!如果需要更多示例(如递归遍历目录、异常日志),随时提问。加油,告别小白!🚀

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 15:56:54

基于Vue的学生作业管理系统3u509(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末

系统程序文件列表系统功能学生,教师,课程类型,课程信息,课程资料,学生作业,作业提交,作业批改开题报告内容基于Vue的学生作业管理系统开题报告一、研究背景与意义1.1 研究背景在教育信息化快速发展的背景下,传统作业管理模式依赖纸质作业和人工批改,存在…

作者头像 李华
网站建设 2026/4/17 17:17:09

导师不会告诉你的9款AI论文神器,AIGC率低至13%!

90%的学生都在为论文查重和AI率超标而焦虑,却不知道有些工具能将AIGC率轻松压到13%以下。这篇文章,我将揭露那些学术圈“秘而不宣”的智能工具,以及如何巧妙利用它们,让你的论文写作效率翻倍,同时完美避开学术风险。 从…

作者头像 李华
网站建设 2026/4/17 3:06:09

服务器数据恢复—服务器常见故障解析,数据恢复常规流程完整曝光

服务器数据恢复到底是一个什么样的流程? 服务器数据丢失后,进行数据恢复前应该做哪些准备? 服务器出现故障后应该如何操作才能避免数据被二次破坏?常见的服务器故障包括:磁盘阵列内多块硬盘离线导致服务器崩溃&#xf…

作者头像 李华
网站建设 2026/4/17 17:14:43

欧姆龙CP1H与2台三菱变频器Modbus RTU通讯那些事儿

欧姆龙cp1h与2台三菱变频器modbus rtu通讯程序。 程序有注释。 用的电脑在线模拟,选的威纶通mt8102ip,如果是真实触摸屏只需更改com口和买一根威纶通与欧姆龙232的通讯线即可。 控制正反转、状态显示、写入频率、加减速时间和读取频率、电流、输出电压&a…

作者头像 李华
网站建设 2026/4/12 14:28:50

阿里通义Z-Image-Turbo WebUI成本优化:高效利用云端GPU资源

阿里通义Z-Image-Turbo WebUI成本优化:高效利用云端GPU资源 作为一名运维工程师,最近我接到一个任务:为团队部署一套AI图像生成服务。最让我头疼的不是技术实现,而是如何在保证性能的同时控制云计算成本。经过多次测试&#xff0c…

作者头像 李华
网站建设 2026/4/17 15:36:54

Z-Image-Turbo性能调优指南:快速搭建你的高效推理环境

Z-Image-Turbo性能调优指南:快速搭建你的高效推理环境 在AI图像生成领域,Z-Image-Turbo凭借其惊人的8步推理能力和亚秒级生成速度,已经成为2025年最受关注的生产级图像生成器之一。本文将带你从零开始搭建一个高效的Z-Image-Turbo推理环境&am…

作者头像 李华