0

0

Java输入输出流与文件操作的语法

P粉602998670

P粉602998670

发布时间:2026-01-11 14:20:02

|

136人浏览过

|

来源于php中文网

原创

java文件读写首选files工具类;fileinputstream用于二进制数据,filereader因无编码参数易乱码,bufferedreader配合inputstreamreader或files方法可精准控编码、缓冲及按行读取。

java输入输出流与文件操作的语法

Java里读文件最常用的三类流怎么选

别一上来就用 FileInputStream,它只适合读字节,中文会乱码;想直接读文本,优先用 BufferedReader 配合 Files.newBufferedReader()InputStreamReader。三类核心流的适用场景如下:

  • FileInputStream / FileOutputStream:处理图片、音频、序列化对象等二进制数据
  • FileReader / FileWriter:简单文本读写,但不支持指定编码(默认平台编码,Windows 是 GBK,Linux/macOS 是 UTF-8),跨平台易出错
  • BufferedReader + InputStreamReaderFiles 工具类:可控编码、带缓冲、支持按行读取,生产环境首选

用 Files.readAllLines() 读文件时为什么抛出 MalformedInputException

这是编码不匹配的典型错误——文件是 UTF-8 编码,但代码没显式指定,JVM 用了系统默认编码去解码。Java 11+ 的 Files.readAllLines() 默认用 UTF-8,但低版本(如 Java 8)默认用系统编码。

  • Java 8 必须显式传 StandardCharsets.UTF_8
    Files.readAllLines(Paths.get("data.txt"), StandardCharsets.UTF_8)
  • 检查文件真实编码:用 file -i data.txt(Linux/macOS)或 VS Code 右下角编码标识
  • 不要依赖 FileReader,它没有编码参数,无法规避此问题

写文件时 FileOutputStream 不覆盖而是追加,怎么控制

FileOutputStream 构造函数第二个布尔参数决定是否追加。默认 false(覆盖),设为 true 才追加。注意:这个开关只对字节流有效,FileWriter 也有类似构造函数,但同样不推荐直接用。

Perl 基础教程 chm
Perl 基础教程 chm

Perl 基础入门中文教程,chm格式,讲述PERL概述、简单变量、操作符、列表和数组变量、文件读写、模式匹配、控制结构、子程序、关联数组/哈希表、格式化输出、文件系统、引用、面向对象、包和模块等知识点。适合初学者阅读和了解Perl脚本语言。

下载
  • 覆盖写(默认):
    new FileOutputStream("out.txt")
  • 追加写:
    new FileOutputStream("out.txt", true)
  • 更安全的替代:用 Files.write() 并传 StandardOpenOption.APPEND
    Files.write(Paths.get("out.txt"), "new line\n".getBytes(StandardCharsets.UTF_8), StandardOpenOption.APPEND)

try-with-resources 不关流,但程序退出后文件还被占用怎么办

常见于 Windows 下用 FileInputStreamFileOutputStream 打开文件后没正确关闭,JVM GC 不保证立即释放句柄。即使写了 try-with-resources,如果流对象被意外逃逸(比如赋值给静态变量、放进线程池任务里延迟使用),仍可能泄漏。

立即学习Java免费学习笔记(深入)”;

  • 确认所有流都在 try 括号内声明:
    try (BufferedReader reader = Files.newBufferedReader(path)) { ... }
  • 避免在 lambda 或匿名内部类中持有流引用
  • lsof -p <pid></pid>(Linux/macOS)或 Process Explorer(Windows)查句柄占用,定位未关闭源头
  • 小文件优先用 Files.readAllBytes() / Files.readString()(Java 11+),它们内部自动管理资源,无手动 close 风险
实际项目里,90% 的文件读写需求用 Files 工具类 + Path 就够了,流对象只在需要逐块处理大文件、或对接加密/压缩等中间件时才显式创建。编码、关闭、追加这三点,漏掉任一个都容易在测试通过后上线翻车。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

182

2024.05.11

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

226

2025.12.18

lambda表达式
lambda表达式

Lambda表达式是一种匿名函数的简洁表示方式,它可以在需要函数作为参数的地方使用,并提供了一种更简洁、更灵活的编码方式,其语法为“lambda 参数列表: 表达式”,参数列表是函数的参数,可以包含一个或多个参数,用逗号分隔,表达式是函数的执行体,用于定义函数的具体操作。本专题为大家提供lambda表达式相关的文章、下载、课程内容,供大家免费下载体验。

215

2023.09.15

python lambda函数
python lambda函数

本专题整合了python lambda函数用法详解,阅读专题下面的文章了解更多详细内容。

192

2025.11.08

Python lambda详解
Python lambda详解

本专题整合了Python lambda函数相关教程,阅读下面的文章了解更多详细内容。

61

2026.01.05

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

765

2023.08.10

append用法
append用法

append是一个常用的命令行工具,用于将一个文件的内容追加到另一个文件的末尾。想了解更多append用法相关内容,可以阅读本专题下面的文章。

349

2023.10.25

python中append的用法
python中append的用法

在Python中,append()是列表对象的一个方法,用于向列表末尾添加一个元素。想了解更多append的更多内容,可以阅读本专题下面的文章。

1080

2023.11.14

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.5万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号