java常用数据流应用实例解析

Java常用数据流应用实例解析

Java中的数据流用于操作输入和输出流,读取和写入数据。Java提供了多个数据流类来完成各种数据读写操作。本文将详细讲解Java常用数据流的使用方法并给出两个实例说明。

常用数据流

Java的常用数据流包括InputStream、OutputStream、Reader和Writer等,这些类都有其各自的子类。我们将分别介绍这些类的使用方法。

InputStream

InputStream是字节输入流,由多个子类实现,如FileInputStream、ByteArrayInputStream、PipedInputStream等。常用方法如下:

  • read()方法:读取输入流中的下一个字节,返回-1表示已经读取完毕。
  • available()方法:返回输入流中可读取的字节数量。
  • skip(long n)方法:跳过输入流中的n个字节不读取。
  • close()方法:关闭输入流。

下面是一个从文件中读取数据的示例代码:

try (InputStream input = new FileInputStream("file.txt")) {
    int data;
    while ((data = input.read()) != -1) {
        // 处理读取到的数据
    }
} catch (IOException e) {
    // 处理异常
}

OutputStream

OutputStream是字节输出流,同样有多个子类实现,如FileOutputStream、ByteArrayOutputStream、PipedOutputStream等。常用方法如下:

  • write(int b)方法:写入字节流。
  • flush()方法:清空输出缓冲区,将数据强制输出到目标设备。
  • close()方法:关闭输出流。

下面是一个将数据写入到文件中的示例代码:

try (OutputStream output = new FileOutputStream("file.txt")) {
    byte[] data = "Hello, world!".getBytes();
    output.write(data);
} catch (IOException e) {
    // 处理异常
}

Reader

Reader是字符输入流,同样由多个子类实现,如FileReader、CharArrayReader、StringReader等。常用方法如下:

  • read()方法:读取字符流中的下一个字符,返回-1表示已经读取完毕。
  • read(char[] cbuf, int off, int len)方法:读取指定长度的字符到缓冲区中。
  • skip(long n)方法:跳过字符流中的n个字符不读取。
  • close()方法:关闭字符输入流。

下面是一个从文件中读取数据并输出到控制台的示例代码:

try (Reader reader = new FileReader("file.txt")) {
    char[] buffer = new char[1024];
    int len;
    while ((len = reader.read(buffer)) != -1) {
        System.out.print(new String(buffer, 0, len));
    }
} catch (IOException e) {
    // 处理异常
}

Writer

Writer是字符输出流,同样由多个子类实现,如FileWriter、CharArrayWriter、StringWriter等。常用方法如下:

  • write(char[] cbuf, int off, int len)方法:写入指定长度的字符。
  • flush()方法:清空输出缓冲区,将数据强制输出到目标设备。
  • close()方法:关闭字符输出流。

下面是一个将数据写入到文件中的示例代码:

try (Writer writer = new FileWriter("file.txt")) {
    char[] data = "Hello, world!".toCharArray();
    writer.write(data);
} catch (IOException e) {
    // 处理异常
}

示例说明

示例一:读取网络资源

我们可以通过Java的URL类来读取网络资源,如下所示:

try (BufferedReader reader = new BufferedReader(
        new InputStreamReader(
                new URL("https://www.baidu.com").openStream()))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    // 处理异常
}

首先使用URL类创建一个URL对象,然后调用其openStream()方法打开与该URL资源的连接获取输入流。接着将输入流包装为字符输入流,再利用BufferedReader类来降低每次读取数据的次数,最后读取数据并输出到控制台。

示例二:序列化对象

Java的ObjectInputStream和ObjectOutputStream类可以实现对象的序列化和反序列化。序列化是将对象转换为二进制流,以便在网络上传输或保存到本地磁盘中,而反序列化则是将对象从二进制流中还原出来。示例代码如下:

class Person implements Serializable {
    String name;
    int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class Main {
    public static void main(String[] args) {
        try (ObjectOutputStream out = new ObjectOutputStream(
                new FileOutputStream("person.dat"))) {
            Person p = new Person("张三", 28);
            out.writeObject(p);
        } catch (IOException e) {
            // 处理异常
        }

        try (ObjectInputStream in = new ObjectInputStream(
                new FileInputStream("person.dat"))) {
            Person p = (Person) in.readObject();
            System.out.println(p.name + ", " + p.age);
        } catch (IOException | ClassNotFoundException e) {
            // 处理异常
        }
    }
}

首先定义一个Person类并实现Serializable接口,然后利用ObjectOutputStream类将Person对象写入到文件person.dat中。接着利用ObjectInputStream类读取文件person.dat中的数据并反序列化为Person对象,最后输出Person对象的姓名和年龄。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java常用数据流应用实例解析 - Python技术站

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

相关文章

  • springMVC的生命周期详解

    Spring MVC的生命周期详解 Spring MVC是什么 Spring MVC 是构建于 Spring Framework 之上的一个与 Servlet API 无关的 Web 框架。相比于传统的 Servlet,使用 Spring MVC 可以更快地开发 Web 应用程序,它也更加灵活、可扩展和可配置。 Spring MVC的生命周期 Spring …

    Java 2023年5月16日
    00
  • Spring Batch批处理框架操作指南

    Spring Batch批处理框架操作指南 简介 Spring Batch是针对于处理海量数据的批处理框架,它通过创建批处理作业(Job)来完成数据的读取、处理和写入输出的操作。本指南为您提供Spring Batch的完整操作指南。 原理 Job: 对整个批处理过程进行定义与配置。 Step: 是Job的一部分,代表一个特定的处理阶段。 ItemReader…

    Java 2023年5月26日
    00
  • SpringBoot RESTful风格入门讲解

    SpringBoot RESTful 风格入门讲解 什么是 RESTful 风格 RESTful 是一种 Web 架构风格,用于开发 Web API。它基于 HTTP 协议,使用 HTTP 中的 GET、POST、PUT、DELETE 等方法,并使用 URL 作为资源的唯一标识,返回 JSON 或 XML 格式的数据。通过 RESTful 风格可以实现 We…

    Java 2023年5月31日
    00
  • Java NIO异步文件通道原理及用法解析

    Java NIO异步文件通道原理及用法解析 什么是Java NIO Java NIO(New IO)是一个针对Java 1.4及以上版本的IO API,用于提供替代传统Java IO API中比较耗时的阻塞式IO操作。与旧的IO API相比,它使Java的IO操作变得更快、更可扩展和更多功能。 Java NIO核心组件包括:选择器、ByteBuffer、Ch…

    Java 2023年5月20日
    00
  • 浅谈Java的String中的subString()方法

    当我们需要截取一个字符串的一部分时,可以使用Java中的String类的subString()方法。该方法的语法如下: public String substring(int beginIndex) public String substring(int beginIndex, int endIndex) 其中,beginIndex是截取字符串的起始位置(包…

    Java 2023年5月27日
    00
  • SSH框架网上商城项目第11战之查询和删除商品功能实现

    SSH框架网上商城项目第11战之查询和删除商品功能实现 本文将详细讲解如何在SSH框架中实现查询和删除商品的功能。在此之前,需要确保该项目中已经实现了商品的增加和修改功能。 查询商品 在实现查询商品的功能前,首先需要在商品管理页面中添加查询表单。在JSP页面中添加如下代码: <form class="form-inline" act…

    Java 2023年6月16日
    00
  • java基础面试题整理小结

    我们来详细讲解如何整理Java基础面试题的攻略。 1. 收集问题 首先,我们需要收集面试时经常出现的问题。可以通过以下途径进行收集: 查阅经典面试题 分析官方文档 参考编程书籍和教程 借鉴其他网站的面试问题 收集到的问题可以先列出来,并加上备注,便于后续整理和分类。 2. 整理分类 将问题按照分类整理,比如语法、集合、并发、IO等方面进行归类。这样方便后续查…

    Java 2023年5月26日
    00
  • spring boot入门开始你的第一个应用

    下面我将详细讲解“SpringBoot入门:开始你的第一个应用”的完整攻略。 1. 环境搭建 在开始之前,我们需要安装Java和IDE,推荐使用IntelliJ IDEA进行开发。然后,我们还需要安装SpringBoot。 2. 新建项目 我们可以选择创建一个Maven项目或者Gradle项目,这里我选择创建Maven项目。使用IDEA创建Maven项目需要…

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