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日

相关文章

  • 详解Java实现负载均衡的几种算法代码

    当我们的应用程序规模开始不断增长时,单个服务器的负载可能会超过其处理能力的极限,导致我们的应用程序的性能下降甚至崩溃。这时就需要使用负载均衡来解决这个问题。本文主要讲解Java实现负载均衡的几种算法代码。 什么是负载均衡 负载均衡是指将请求分发到多个服务器上,以平衡每个服务器上的负载,避免单个服务器过载而导致应用程序的性能下降甚至崩溃。 负载均衡算法 负载均…

    Java 2023年5月19日
    00
  • 如何通过Java实现加密、解密Word文档

    要通过Java实现加密和解密Word文档,需要进行以下步骤: 添加依赖在Java项目中,需要添加依赖,包括poi-ooxml和poi-ooxml-schemas。可以在Maven、Gradle等项目管理工具中添加依赖,也可以直接在项目中使用jar包。 加密Word文档加密Word文档需要使用Apache POI库。首先需要创建一个POIFSFileSyste…

    Java 2023年5月26日
    00
  • Eclipse自动生成方法存根该怎么设置?

    进入Eclipse的“首选项”设置界面 在Eclipse的菜单栏中选择“Window” -> “Preferences”,进入Eclipse的设置(Preferences)界面。 打开“Java” -> “Code Style” -> “Code Templates”选项卡 在Eclipse设置界面中,展开“Java”栏目,并点击“Code…

    Java 2023年6月15日
    00
  • Json转list二层解析转换代码实例

    下面是完整的攻略: 理解Json数据格式 在进行Json转list二层解析转换操作之前,我们需要先对Json数据格式有一定的了解。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输和存储。它的基本结构是一个键值对,用花括号包裹,例如: { "name": "张三&qu…

    Java 2023年5月26日
    00
  • 浅谈Java模板引擎性能对比

    浅谈Java模板引擎性能对比 简介 本文主要讨论Java模板引擎的性能对比,介绍常见的Java模板引擎及其性能特点,并通过两个示例来说明不同模板引擎的使用方式与性能表现。 常见Java模板引擎 常见的Java模板引擎有JSP、FreeMarker、Thymeleaf、Velocity等,这些引擎的性能特点各不相同。 JSP:JSP作为Java Web技术的重…

    Java 2023年6月16日
    00
  • 详解Java中JSON数据的生成与解析

    详解Java中JSON数据的生成与解析 JSON数据格式现在已经成为了网络数据交换的标准之一,Java作为一门主流语言,当然也提供了很好的生成和解析JSON数据的库。下面我们来详细讲解如何在Java中生成和解析JSON数据。 JSON数据的生成 Java提供了许多第三方库用于生成JSON数据,其中Jackson库是比较常用的一种,我们就以这个库为例来讲解如何…

    Java 2023年5月26日
    00
  • java.lang.NullPointerException出现的几种原因及解决方案

    Java.lang.NullPointerException出现的几种原因及解决方案 简介 Java.lang.NullPointerException是Java程序中常见的运行时异常,一般会出现在调用空对象的方法或属性时。出现该异常的原因较为多样,本文将介绍其中几种常见的原因,并提出对应的解决方案,以帮助程序开发者快速解决问题。 原因和解决方案 1. 调用…

    Java 2023年5月27日
    00
  • java 解压与压缩文件夹的实例详解

    Java解压与压缩文件夹的实例详解 Java提供了许多用于压缩和解压缩文件的标准API,这些API可以通过java.util.zip包和java.util.jar包来实现。这些API可以让我们在Java中轻松地压缩和解压缩文件,并且在我们需要处理大量文件或需要将文件打包成压缩文件时非常有用。在本文中,我们将详细讲述如何使用Java的压缩和解压缩API。 压缩…

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