Java一分钟之-Java IO流:文件读写基础

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。

Java的IO流是处理输入输出操作的核心工具,包括读取文件、写入文件、网络通信等。本文将介绍文件读写的常见操作,分析易错点,并提供代码示例,帮助你快速掌握Java IO流的基础知识。
image.png

一、文件读写概述

Java中的FileInputStreamFileOutputStream用于处理文件的读写。读取文件时,数据从文件流向内存;写入文件时,数据从内存流向文件。

文件读取

  • FileInputStream:从文件中读取字节流。
  • BufferedReader:从字符流(如文件)中读取文本,提高了读取效率。

文件写入

  • FileOutputStream:向文件中写入字节流。
  • PrintWriter:向字符流(如文件)中写入文本,方便格式化输出。

二、常见操作

1. 文件读取

try (FileInputStream fis = new FileInputStream("example.txt");
     BufferedReader br = new BufferedReader(new InputStreamReader(fis))) {
   
   
    String line;
    while ((line = br.readLine()) != null) {
   
   
        System.out.println(line);
    }
} catch (IOException e) {
   
   
    e.printStackTrace();
}

2. 文件写入

try (FileOutputStream fos = new FileOutputStream("example.txt");
     PrintWriter writer = new PrintWriter(fos)) {
   
   
    writer.println("Hello, World!");
    writer.println("This is a test.");
} catch (IOException e) {
   
   
    e.printStackTrace();
}

三、常见问题与易错点

1. 未关闭流

问题:忘记关闭流可能导致资源泄漏,影响程序性能。 避免:使用try-with-resources语句自动关闭流。

2. 文件路径问题

问题:相对路径可能导致找不到文件,绝对路径更稳定。 避免:使用绝对路径,或确保程序运行目录正确。

3. 编码与解码

问题:默认编码可能与文件实际编码不匹配,导致乱码。 避免:明确指定编码,如new InputStreamReader(fis, "UTF-8")

4. 文件权限

问题:没有写入权限时,写入操作会失败。 避免:确保程序有写入文件的权限,或使用Files类的静态方法处理权限。

5. 文件操作异常处理

问题:忽视异常处理可能导致程序崩溃。 避免:捕获并处理IOException,确保程序健壮性。

四、代码示例:追加写入与读取

// 追加写入
try (FileOutputStream fos = new FileOutputStream("example.txt", true);
     PrintWriter writer = new PrintWriter(fos)) {
   
   
    writer.println("Additional content.");
} catch (IOException e) {
   
   
    e.printStackTrace();
}

// 读取追加内容
try (FileInputStream fis = new FileInputStream("example.txt");
     BufferedReader br = new BufferedReader(new InputStreamReader(fis, StandardCharsets.UTF_8))) {
   
   
    String line;
    while ((line = br.readLine()) != null) {
   
   
        System.out.println(line);
    }
} catch (IOException e) {
   
   
    e.printStackTrace();
}

五、总结

理解Java IO流的基本概念,熟练掌握文件读写操作,是进行文件处理的基础。注意流的关闭、文件路径、编码问题,以及异常处理,能够帮助你编写更可靠的程序。在实际开发中,还可以考虑使用BufferedInputStreamBufferedOutputStream提高性能,或使用Files类提供的便捷方法。

目录
相关文章
|
8天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
28 2
|
7天前
|
Java 测试技术 Maven
Maven clean 提示文件 java.io.IOException
在使用Maven进行项目打包时,遇到了`Failed to delete`错误,尝试手动删除目标文件也失败,提示`java.io.IOException`。经过分析,发现问题是由于`sys-info.log`文件被其他进程占用。解决方法是关闭IDEA和相关Java进程,清理隐藏的Java进程后重新尝试Maven clean操作。最终问题得以解决。总结:遇到此类问题时,可以通过任务管理器清理相关进程或重启电脑来解决。
|
11天前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
29 2
|
20天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
21天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
28 4
|
24天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
24天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
1月前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
170 1
|
18天前
|
存储 弹性计算 固态存储
阿里云服务器ESSD Entry系统盘测评IOPS、IO读写和时延性能参数
ESSD Entry云盘是阿里云推出的新一代云盘,具备高IOPS、低延迟和企业级数据保护能力。适用于开发与测试场景,支持按量付费和包年包月计费模式。99元和199元的ECS经济型e实例和通用算力型u1实例均采用ESSD Entry系统盘,性价比高。详细性能参数和价格请参考阿里云官方页面。
54 0
|
26天前
|
缓存 Java 程序员
Java|SpringBoot 项目开发时,让 FreeMarker 文件编辑后自动更新
在开发过程中,FreeMarker 文件编辑后,每次都需要重启应用才能看到效果,效率非常低下。通过一些配置后,可以让它们免重启自动更新。
26 0
下一篇
无影云桌面