java 基础知识之IO总结

Java 基础知识之 IO 总结

什么是 IO?

IO(Input/Output,即输入/输出)是计算机领域中非常重要和基础的概念,指计算机与外部设备交换数据的过程。在 Java 中,IO 通常用于读取和写入文件、网络通信以及其他数据源和操作。Java 提供了强大的 IO 支持,为我们提供了便捷的、可靠的、跨平台的数据交换方案。

Java IO 的分类

Java 中 IO 分为几种不同类型,包括:

  • 字节流(InputStream 和 OutputStream):用于处理二进制数据
  • 字符流(Reader 和 Writer):用于处理文本数据
  • 堆内存流(ByteArrayInputStream 和 ByteArrayOutputStream):用于在内存中读写数据
  • 文件流(FileInputStream 和 FileOutputStream):用于操作文件
  • 缓存流(BufferedInputStream 和 BufferedOutputStream):用于提高性能

Java IO 常用的类和方法

InputStream 和 OutputStream

  • InputStream:抽象类,用于读取二进制数据
  • OutputStream:抽象类,用于写入二进制数据

在使用 InputStream 和 OutputStream 时,常用的类和方法有:

  • FileInputStream 和 FileOutputStream:用于读写文件,提供多种读写方法
  • ByteArrayInputStream 和 ByteArrayOutputStream:用于读写内存中的二进制数据
  • BufferedInputStream 和 BufferedOutputStream:用于提高性能
  • DataInputStream 和 DataOutputStream:用于读写 Java 基本类型数据
  • ObjectInputStream 和 ObjectOutputStream:用于读写对象

示例:

// 读取文件内容并写入另一个文件
public static void copyFile(String src, String dst) throws IOException {
    try (InputStream in = new FileInputStream(src);
         OutputStream out = new FileOutputStream(dst)) {
        byte[] buffer = new byte[4096];
        int len;
        while ((len = in.read(buffer)) > 0) {
            out.write(buffer, 0, len);
        }
    }
}

Reader 和 Writer

  • Reader:抽象类,用于读取文本数据
  • Writer:抽象类,用于写入文本数据

在使用 Reader 和 Writer 时,常用的类和方法有:

  • FileReader 和 FileWriter:用于读写文本文件,提供多种读写方法
  • BufferedReader 和 BufferedWriter:用于提高性能
  • InputStreamReader 和 OutputStreamWriter:用于编码转换,如 UTF-8 转换成 GBK
  • PrintWriter:用于格式化输出

示例:

// 读取文件内容并输出到控制台
public static void printFile(String filename) throws IOException {
    try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
    }
}

Java NIO

Java NIO(New IO)是 Java 1.4 引入的新的 IO API,它提供了更高效、更灵活和更可扩展的 IO 方案。Java NIO 中的基本概念是通道和缓冲区,它们比传统的 InputStream 和 OutputStream 更加灵活和高效。

在 Java NIO 中,数据被读取到缓冲区中,然后再从缓冲区中写入到通道中,或从通道中读取数据写入到缓冲区中。Java NIO 还提供了选择器(Selector)来实现非阻塞 IO。

示例:

// 从文件中读取内容并输出到控制台
public static void readFileWithChannel(String filename) throws IOException {
    try (FileChannel channel = new FileInputStream(filename).getChannel()) {
        ByteBuffer buffer = ByteBuffer.allocate(1024);
        while (channel.read(buffer) != -1) {
            buffer.flip();
            System.out.print(Charset.forName("UTF-8").decode(buffer));
            buffer.clear();
        }
   }
}

总结

Java IO 是 Java 编程中非常重要和基础的概念,它提供了强大的数据交换方案。我们可以使用 Java 的不同类型 IO 来读写文件、网络通信以及其他数据源和操作。在 Java 中,IO 有几种类型,包括字节流、字符流、堆内存流、文件流和缓存流等。Java NIO 引入了更高效、更灵活和更可扩展的 IO 方案,提供了更加灵活和高效的通道和缓冲区。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java 基础知识之IO总结 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Java中常见的5种WEB服务器介绍

    Java中常见的5种WEB服务器介绍 1. Apache Tomcat Apache Tomcat是最流行的Java应用服务器之一。它是一个轻量级、开源的Web容器,常用于开发和部署Java Servlet和JavaServer Pages (JSP)应用程序。Tomcat可用于开发和部署Java Web应用程序,而且简单易用。除了常见的Java Web技术…

    Java 2023年5月19日
    00
  • SpringBoot依赖管理的源码解析

    SpringBoot依赖管理的源码解析 SpringBoot依赖管理包括以下三个方面:依赖注入、自动配置、起步依赖。 1.1 依赖注入 SpringBoot采用了Java注解的方式来实现依赖注入,主要包括以下注解: @Autowired:自动装配,SpringBoot会自动将Bean注入到需要的地方; @Component:将当前类标记为Spring Bea…

    Java 2023年5月19日
    00
  • Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析

    让我们来详细讲解一下“Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析”。 ArrayList 类是 Java 内置容器类中的一种,它可以生成基于动态数组的可扩容序列。而 ArrayList.toArray(T[]) 方法则是 ArrayList 中用于转换成数组的方法之一。我们知道,ArrayList 中的…

    Java 2023年5月27日
    00
  • 如何把char数组转换成String

    将char数组转换成String通常可以使用String类的构造函数方法或valueOf()方法。 使用String类的构造函数方法 示例1: char[] charArray = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’}; String str = new String(charArray); System.out.println(str); /…

    Java 2023年5月26日
    00
  • hibernate更新数据方法小结

    Hibernate更新数据方法小结 Hibernate是一个广泛使用的ORM框架,可以方便地操作数据库。本文将介绍Hibernate中的更新数据方法,包括使用HQL语句和使用Hibernate Session的API方法。 使用HQL语句更新数据 HQL(Hibernate Query Language)是Hibernate独有的一种查询语言,可以操作实体类…

    Java 2023年5月20日
    00
  • Spring Boot Reactor 整合 Resilience4j详析

    一、Spring Boot Reactor 整合 Resilience4j Spring Boot是基于Spring框架的快速开发框架,是Spring中最受欢迎的子项目之一。而Reactor则是Spring家族中用于构建反应式应用程序的一个项目。Resilience4j是一个基于Java8和函数式编程设计理念构建的轻量级容错框架。可以在分布式系统中实现自我保…

    Java 2023年5月19日
    00
  • spring中的FactoryBean代码示例

    FactoryBean是Spring中一个非常重要的接口,常用于实例化非Bean类型对象或实例化有状态的Bean对象。在使用FactoryBean时,需要实现该接口并实现其中的方法,让Spring容器在初始化Bean时通过FactoryBean实现对Bean的创建和定制化处理。 1. 定义FactoryBean 在Spring中定义FactoryBean需要…

    Java 2023年5月31日
    00
  • springmvc学习笔记-返回json的日期格式问题的解决方法

    下面是“springmvc学习笔记-返回json的日期格式问题的解决方法”的完整攻略: Spring MVC 返回JSON的日期格式问题的解决方法 Spring MVC框架中,我们通常会使用JSON作为数据返回格式,但是在返回JSON数据的时候,日期格式往往会出现一些问题,本文将详细介绍如何解决Spring MVC返回JSON的日期格式问题。 问题描述 在S…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部