JAVA IO API使用详解

Java IO API使用详解

概述

Java IO API是用于读写数据的标准API。Java IO库是一个基于流的库,主要利用了Java中的抽象类和接口来完成对文件的读写操作。

在Java IO库中,主要包括以下三种抽象源:

  • 字节流
  • 字符流
  • 以及文件读写流

字节流

字节流是Java IO库中最基本的流,它支持对字节的输入和输出两种操作。

InputStream

InputStream是所有字节输入流的抽象基类。它包含许多方法,如:

int read() throws IOException
int read(byte[] b) throws IOException
int read(byte[] b, int off, int len) throws IOException
void close() throws IOException

其中,第一个read()方法用于读取单个字节。第二个read()方法用于读取多个字节,并将其存储在给定的字节数组中。第三个read()方法与第二个类似,但它允许你选择从数组的哪个位置开始读取,以及读取的字节数。close()方法用于关闭流并释放其相关资源。

下面是一个从文件中读取字节并将其写入到标准输出流的示例:

try (FileInputStream inputStream = new FileInputStream("example.txt")) {
    int content;
    while ((content = inputStream.read()) != -1) {
        System.out.print((char) content);
    }
} catch (IOException e) {
    e.printStackTrace();
}

OutputStream

OutputStream是所有字节输出流的抽象基类。它包含许多方法,如:

void write(int b) throws IOException
void write(byte[] b) throws IOException
void write(byte[] b, int off, int len) throws IOException
void flush() throws IOException
void close() throws IOException

其中,第一个write()方法用于写入单个字节。第二个write()方法用于写入整个字节数组。第三个write()方法与第二个类似,但它允许您从数组的给定位置开始写入。flush()方法用于清空缓冲区并将缓冲数据写入底层流中。close()方法用于关闭流并释放其相关资源。

下面是将字节写入文件的示例:

try (FileOutputStream outputStream = new FileOutputStream("example.txt")) {
    String message = "Hello, world!";
    byte[] content = message.getBytes();
    outputStream.write(content);
} catch (IOException e) {
    e.printStackTrace();
}

字符流

字符流用于在字符级别上读取和写入数据。与字节流不同,字符流处理Unicode字符,特别是在国际化方面非常有用。

Reader

Reader是所有字符输入流的抽象基类。它包含许多方法,如:

int read() throws IOException
int read(char[] cbuf) throws IOException
int read(char[] cbuf, int off, int len) throws IOException
void close() throws IOException

其中,第一个read()方法用于读取单个字符。第二个read()方法用于读取多个字符,并将其存储在给定的字符数组中。第三个read()方法与第二个类似,但它允许您选择从数组的哪个位置开始读取,以及读取的字符数。close()方法用于关闭流并释放其相关资源。

下面是从文件中读取字符并将其写入到标准输出流的示例:

try (FileReader fileReader = new FileReader("example.txt")) {
    int content;
    while ((content = fileReader.read()) != -1) {
        System.out.print((char) content);
    }
} catch (IOException e) {
    e.printStackTrace();
}

Writer

Writer是所有字符输出流的抽象基类。它包含许多方法,如:

void write(int c) throws IOException
void write(char[] cbuf) throws IOException
void write(char[] cbuf, int off, int len) throws IOException
void write(String str) throws IOException
void write(String str, int off, int len) throws IOException
void flush() throws IOException
void close() throws IOException

其中,第一个write()方法用于写入单个字符。第二个write()方法用于写入整个字符数组。第三个write()方法与第二个类似,但它允许您从数组的给定位置开始写入。第四个write()方法用于写入字符串。第五个write()方法与第四个类似,但它允许您从字符串的给定位置开始写入并写入给定的字符数。flush()方法用于清空缓冲区并将缓冲数据写入底层流中。close()方法用于关闭流并释放其相关资源。

下面是将字符写入文件的示例:

try (FileWriter fileWriter = new FileWriter("example.txt")) {
    String message = "Hello, world!";
    fileWriter.write(message);
} catch (IOException e) {
    e.printStackTrace();
}

文件读写流

文件读写流是Java IO库中用于读写文件的流。

FileInputStream

FileInputStream用于从文件系统中的文件读取数据。它继承自InputStream类并实现了所有其方法。它还提供了一些自己的方法,如:

FileChannel getChannel()
FileDescriptor getFD()
int available() throws IOException
long skip(long n) throws IOException

其中,getChannel()方法用于获取与该流关联的文件通道。getFD()方法用于获取与此流关联的文件描述符。available()方法用于返回此流中可供读取的字节数。skip()方法用于跳过指定字节数并返回所跳过的字节数。

下面是从文件中读取字节并将其写入到标准输出流的示例:

try (FileInputStream inputStream = new FileInputStream("example.txt")) {
    byte[] content = new byte[inputStream.available()];
    inputStream.read(content);
    String message = new String(content);
    System.out.println(message);
} catch (IOException e) {
    e.printStackTrace();
}

FileOutputStream

FileOutputStream用于将数据写入文件系统中的文件。它继承自OutputStream类并实现了所有其方法。它还提供了一些自己的方法,如:

FileChannel getChannel()
FileDescriptor getFD()

其中,getChannel()方法用于获取与该流关联的文件通道。getFD()方法用于获取与此流关联的文件描述符。

下面是将字节写入文件的示例:

try (FileOutputStream outputStream = new FileOutputStream("example.txt")) {
    String message = "Hello, world!";
    byte[] content = message.getBytes();
    outputStream.write(content);
} catch (IOException e) {
    e.printStackTrace();
}

结论

这篇文章涵盖了Java IO API的基本知识。它包括字节流、字符流以及文件读写流。这只是一个简短的介绍,你可以在Java官方文档中找到更完整的信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA IO API使用详解 - Python技术站

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

相关文章

  • JavaScript解析JSON格式数据的方法示例

    接下来我将为你详细讲解”JavaScript解析JSON格式数据的方法示例”的完整攻略,过程中我会提供至少两个示例说明: 一、JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,由JavaScript语言中的对象、数组等组合而成。它具有结构化、易读易写、便于程序解析等特点,成为了广泛使用的数据交互格式。 …

    Java 2023年5月26日
    00
  • Mybatis Interceptor 拦截器的实现

    Mybatis Interceptor 拦截器是Mybatis框架使用的一种插件机制,可以拦截Sql语句执行的过程,对Sql进行加工或者做其他处理,比如增加动态SQL条件、查询性能优化等。以下是Mybatis Interceptor 拦截器的完整实现攻略: Mybatis Interceptor 拦截器的实现步骤 步骤1:定义自定义Interceptor类 …

    Java 2023年5月20日
    00
  • Java sha1散列算法原理及代码实例

    Java sha1散列算法原理及代码实例 前言 在软件开发场景中,我们经常会需要对敏感数据进行加密处理,以防止数据泄漏和恶意攻击。散列算法是一种很好的加密方式。本文将详细介绍Java中的sha1散列算法,包括原理及代码实例。 sha1散列算法原理 sha1散列算法是一种单向不可逆算法,通过该算法我们可以将任意长度的数据进行加密处理。在Java中,sha1散列…

    Java 2023年5月19日
    00
  • Java中的Object类用法总结

    Java中的Object类用法总结 在Java中,每个类都是Object类的子类,因此Object类提供了一些通用方法可以用于任何对象,本文将总结Object类的用法。 Object类中的常用方法 equals() equals()方法用于比较两个对象的值是否相等,但需要注意的是,==运算符比较的是两个对象的引用是否相等,而不是值。 示例: String s…

    Java 2023年5月26日
    00
  • 详解MyBatis工作原理

    详解MyBatis工作原理 MyBatis是一个流行的Java持久层框架,它通过将Java对象映射到数据库记录来操作数据库。本文将详细讲解MyBatis运作的原理。 MyBatis的三大组件 MyBatis框架主要由三个核心组件组成: SqlSessionFactoryBuilder:用于创建SqlSessionFactory。 SqlSessionFact…

    Java 2023年5月20日
    00
  • 浅谈Spring Boot 属性配置和自定义属性配置

    浅谈Spring Boot属性配置和自定义属性配置攻略 Spring Boot属性配置 Spring Boot通过提供大量的默认属性值来简化应用程序的配置。这些属性可以在application.properties文件中定义,也可以在application.yml文件中定义。在这两种文件类型中,属性都按照键值对的形式定义,具体的格式和语法规则可以参见官方文档…

    Java 2023年5月15日
    00
  • Java下利用Jackson进行JSON解析和序列化示例

    下面是关于“Java下利用Jackson进行JSON解析和序列化示例”的完整攻略。 1. 简介 Jackson是一个处理JSON的Java库,它可以将Java对象与JSON数据进行相互转化。在Java应用开发中,我们通常需要将Java对象序列化为JSON数据来进行数据传输或存储,同时也需要将JSON数据反序列化为Java对象来进行数据操作。Jackson提供…

    Java 2023年5月26日
    00
  • IDEA 连接数据库的实现方法

    下面是“IDEA 连接数据库的实现方法”的完整攻略及示例说明。 1. 使用JDBC连接数据库 1.1 引入JDBC依赖 在Maven的pom.xml文件中,添加MySQL或其他数据库的JDBC依赖。 例如,在连接MySQL时,可以添加如下依赖: <dependency> <groupId>mysql</groupId> &…

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