当前位置: 首页 > news >正文

Java输入输出

Java 输入输出(I/O)详解与常用代码大全

Java 的输入输出(I/O)主要通过java.iojava.nio包实现,用于读取文件、键盘输入、网络数据等,以及写入文件、控制台输出等。下面按场景分类,汇总最实用、最常用的代码示例(基于 Java 8+,推荐使用 try-with-resources 自动关闭资源)。

1. 控制台输入(键盘输入)

最常用:Scanner(推荐新手)

importjava.util.Scanner;Scannersc=newScanner(System.in);// 读取一行字符串System.out.print("请输入姓名:");Stringname=sc.nextLine();// 读取整数System.out.print("请输入年龄:");intage=sc.nextInt();// 读取浮点数doublescore=sc.nextDouble();// 关闭(可选,System.in 不建议关闭)sc.close();

高级:BufferedReader(性能更好,读取大输入)

importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.io.IOException;BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));System.out.print("请输入内容:");Stringline=br.readLine();// 读取一行
2. 控制台输出
System.out.println("普通输出,自动换行");System.out.print("不换行输出");System.out.printf("格式化输出:年龄 %d,成绩 %.2f\n",age,score);
3. 文件读取(最常用方式)

方式一:Files + Paths(Java 7+,最简洁)

importjava.nio.file.Files;importjava.nio.file.Paths;importjava.io.IOException;importjava.util.List;try{// 读取整个文件为字符串Stringcontent=Files.readString(Paths.get("file.txt"));// 读取所有行到 ListList<String>lines=Files.readAllLines(Paths.get("file.txt"));// 逐行读取(推荐大文件)Files.lines(Paths.get("file.txt")).forEach(System.out::println);}catch(IOExceptione){e.printStackTrace();}

方式二:BufferedReader(经典,高效)

importjava.io.*;try(BufferedReaderbr=newBufferedReader(newFileReader("file.txt"))){Stringline;while((line=br.readLine())!=null){System.out.println(line);}}catch(IOExceptione){e.printStackTrace();}
4. 文件写入

方式一:Files(最简洁)

importjava.nio.file.*;try{// 写入字符串(覆盖)Files.writeString(Paths.get("output.txt"),"Hello Java");// 追加写入多行Files.write(Paths.get("output.txt"),List.of("第一行","第二行"),StandardOpenOption.APPEND,StandardOpenOption.CREATE);}catch(IOExceptione){e.printStackTrace();}

方式二:BufferedWriter(经典)

try(BufferedWriterbw=newBufferedWriter(newFileWriter("output.txt",true))){// true 为追加bw.write("这是写入的内容");bw.newLine();// 换行bw.write("第二行");}catch(IOExceptione){e.printStackTrace();}
5. 复制文件(实用工具方法)
try{Files.copy(Paths.get("source.txt"),Paths.get("target.txt"),StandardCopyOption.REPLACE_EXISTING);}catch(IOExceptione){e.printStackTrace();}
6. 序列化对象(保存对象到文件)
// 对象需实现 Serializable 接口classPersonimplementsjava.io.Serializable{Stringname;intage;// transient 字段不序列化(如密码)transientStringpassword;}// 序列化(保存对象)try(ObjectOutputStreamoos=newObjectOutputStream(newFileOutputStream("person.obj"))){oos.writeObject(newPerson("张三",25));}// 反序列化(读取对象)try(ObjectInputStreamois=newObjectInputStream(newFileInputStream("person.obj"))){Personp=(Person)ois.readObject();System.out.println(p.name);}
7. 常用路径操作(java.nio.file)
Pathpath=Paths.get("dir/sub/file.txt");// 获取文件名、父目录、扩展名StringfileName=path.getFileName().toString();// file.txtStringparent=path.getParent().toString();// dir/subStringext=fileName.substring(fileName.lastIndexOf(".")+1);// txt// 创建目录Files.createDirectories(Paths.get("new/dir"));// 判断文件是否存在if(Files.exists(path)){...}// 删除文件/目录Files.deleteIfExists(path);
总结对比表(推荐选择)
场景推荐方式原因
简单控制台输入Scanner易用、支持多种类型
大量文本读取BufferedReader / Files.lines高效、内存友好
小文件读写Files.readString/writeString代码最少
大文件读写BufferedReader/Writer性能好
复制/移动/删除文件Files.copy/move/delete简洁原子操作
保存对象状态ObjectOutputStream序列化
注意事项
  • 始终使用try-with-resources自动关闭资源,避免资源泄露。
  • 处理IOException(文件不存在、权限问题等)。
  • 路径使用Paths.get(),跨平台兼容(Windows/Linux)。
  • 大文件避免一次性读入内存。

这些代码覆盖了 Java I/O 的 95% 日常需求,直接复制即可使用。如果需要网络 I/O(如 Socket)、JSON 文件读写、CSV 处理等高级用法,欢迎继续提问!

http://www.cnnetsun.cn/news/463884.html

相关文章:

  • 深度学习毕设项目:机器学习基于python卷积神经网络的海洋生物识别
  • 亚马逊Alexa+向公众开放早期体验网站
  • 结构化预处理让DeepSeek准确率提升51%,现已开源丨清华深言
  • JD面挂了:简历写了 AI 假项目,被问 RAG 语义丢失 答不上来!背这三板斧,他当场叫好!
  • AI 技术在英语培训中的应用
  • 网络延迟与丢包问题排查实战
  • 2026 届计算机毕业设计全流程指南(从 0 到答辩)
  • 计算机专业毕设怎么选题?老师最容易通过的 20 个方向
  • 如何在 ALCOR 强风控逻辑约束下,如何把 V8.2 年化拉到 28%?——一次“先别死,再赚钱”的量化实战复盘
  • 【SQLSERVER】 Page life expectancy计数器参数解析
  • 艾体宝案例 | ArangoDB赋能电商个性化推荐:精准匹配需求,拓展增长空间
  • hadoop|贪心
  • AI的下半场!Agent智能体--全景解析(附相关标的)
  • 震惊!30B参数碾压GPT-5?MiroThinker 1.5开源大模型杀疯了!小白程序员必学的“交互式智能“新范式,降本增效还能跑赢235B!内卷时代的新出路!
  • MindSpore开发之路:模型的持久化:保存与加载Checkpoint
  • _基于springboot的二手车交易系统(11649)
  • Linux中dd命令详解
  • 导师推荐!10款AI论文写作软件测评:研究生毕业论文必备工具
  • PI VLA模型解读系列(一):从π0模型到Hi Robot
  • 学术 PPT “智作” 革命!虎贲等考 AI:从 “熬夜排版” 到 “答辩封神”
  • Go sync包并发原语详解
  • 口碑好的回收梅花鹿哪家专业
  • 雷电冲击残压与电力系统绝缘设计
  • 量化权重分组保精度
  • 将电子书文本转换为盲文格式,生成可打印的盲文文档,供视障用户阅读。
  • 【保姆级教程】从“陪聊“到“打工“,Google教你构建自己的AI智能体,代码示例全在这!
  • 【干货收藏】六大AI巨头Agent架构全解剖:Context Engineering取代Prompt Engineering成核心
  • 收藏!长三角春招火爆出圈,AI大模型岗位月薪最高4万,程序员/小白入行指南
  • 作为其整体增长战略的一部分,SBC Medical对美国领先医疗美容平台OrangeTwist进行战略投资并与之达成合作联盟,以加速全球扩张进程
  • 本地部署智能家居系统 OpenHAB 并实现外部访问( Windows 版本)