Java-I/O

Java I/O(输入/输出)是指Java编程语言处理数据输入和输出的功能。Java I/O主要包含在 java.io 包中,提供了一组丰富的类和接口,用于读取和写入文件、数据流和控制台。

Java I/O 的关键组件:


    • 字节流 :处理原始二进制数据。关键类包括:
      • InputStream:所有字节输入流的抽象类。
      • OutputStream:所有字节输出流的抽象类。
      • 常用子类:FileInputStreamFileOutputStreamBufferedInputStreamBufferedOutputStream
    • 字符流 :处理字符数据(文本)。关键类包括:
      • Reader:所有字符输入流的抽象类。
      • Writer:所有字符输出流的抽象类。
      • 常用子类:FileReaderFileWriterBufferedReaderBufferedWriter
  1. 文件处理

    • File 类用于以抽象方式表示文件和目录路径名。它还提供了创建、删除和操作文件和目录的方法。
  2. 序列化

    • Java 提供了一种机制,可以将对象转换为字节流(序列化),并将其恢复为对象(反序列化)。这可以通过 ObjectInputStreamObjectOutputStream 来实现。

基本使用示例:


以下是一个简单示例,演示如何使用 Java I/O 来读取和写入文件:

  • 创建写入流 :使用 BufferedWriterFileWriter 创建一个输出流,将数据写入 outputFilePath 指定的文件。BufferedWriter 提供了缓冲功能,提高写入效率。
  • try-with-resources :这种语法确保在 try 块结束时自动关闭资源,避免内存泄漏。
  • 创建读取流 :类似于写入流,使用 BufferedReaderFileReader 创建一个输入流,从 inputFilePath 指定的文件读取数据。
  • 循环读取 :定义一个字符串变量 line,使用 readLine() 方法逐行读取文件内容。直到文件结束(readLine() 返回 null)。
java 复制代码
import java.io.*;  

public class JavaIOExample {  
    public static void main(String[] args) {  
        String inputFilePath = "input.txt";  
        String outputFilePath = "output.txt";  

        // 写入文件  
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath))) {  
            writer.write("Hello, World!");  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  

        // 读取文件  
        try (BufferedReader reader = new BufferedReader(new FileReader(inputFilePath))) {  
            String line;  
            while ((line = reader.readLine()) != null) {  
                System.out.println(line);  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
}
  • 输入输出流程:这段代码展示了如何使用 Java I/O 来写入和读取文件。首先,它写入一个字符串到指定文件,然后读取另外一个文件的内容并输出到控制台。
  • 资源管理:通过 try-with-resources 语法,实现了自动关闭流的功能,避免了手动关闭流可能造成的错误。
  • 异常处理:通过捕获异常,确保程序运行的鲁棒性。

重要事项:

  • 始终关闭流以释放系统资源。这可以通过使用"资源自动关闭"语句实现,如示例所示。
  • 注意异常,尤其是 IOException,它可能在文件操作期间发生。
相关推荐
闲人编程16 小时前
Python与大数据:使用PySpark处理海量数据
大数据·开发语言·分布式·python·spark·codecapsule·大规模
一 乐16 小时前
校园墙|校园社区|基于Java+vue的校园墙小程序系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·小程序
TT哇16 小时前
【面经 每日一题】面试题16.25.LRU缓存(medium)
java·算法·缓存·面试
青云交16 小时前
Java 大视界 -- 基于 Java 的大数据联邦学习在跨行业数据协同创新中的实践突破
java·分布式计算·隐私保护·apache flink·大数据联邦学习·跨行业数据协同·安全通信
合作小小程序员小小店16 小时前
桌面开发,在线%考试管理%系统,基于eclipse,java,swing,mysql数据库。
java·数据库·mysql·eclipse·jdk
T.Ree.16 小时前
汇编_读写内存
开发语言·汇编·c#
oioihoii16 小时前
C/C++混合项目中的头文件管理:.h与.hpp的分工与协作
java·c语言·c++
一瓢一瓢的饮 alanchan16 小时前
Flink原理与实战(java版)#第2章 Flink的入门(第二节Flink简介)
java·大数据·flink·kafka·实时计算·离线计算·流批一体化计算
vx_bscxy32216 小时前
告别毕设焦虑!Python 爬虫 + Java 系统 + 数据大屏,含详细开发文档 基于微信小程序的民宿预约系统22398 (上万套实战教程,赠送源码)
java·spring boot·mysql·微信小程序·课程设计
kaikaile199517 小时前
基于MATLAB的直接序列扩频(DSSS)通信系统仿真实现
开发语言·matlab