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 Apache POI报错“MissingSheetException”的原因与解决办法

    “MissingCellDataException”是Java的Apache POI类库中的一个异常,通常由以下原因之一引起: 单元格错误:如果单元格中缺少数据,则可能会出现此异常。例如,可能会尝试读取不存在的单元格或尝试读取未填充的单元格。 以下是两个实例: 例1 如果单元格中缺少数据,则可以尝试使用正确的单元格以解决此问题。例如,在Java中,可以使用以…

    Java 2023年5月5日
    00
  • 使用Springboot+poi上传并处理百万级数据EXCEL

    下面我将为您详细讲解如何使用Springboot+poi上传并处理百万级数据EXCEL的完整攻略。 1. 准备工作 在使用Springboot+poi上传并处理百万级数据EXCEL前,需要先完成以下准备工作: 确保已经安装好了Java环境,建议使用JDK 1.8及以上版本; 确保已经安装好了Maven,可以通过Maven来管理项目依赖; 需要引入Spring…

    Java 2023年6月3日
    00
  • 高命中率的varnish缓存配置分享

    下面我来为你详细讲解“高命中率的varnish缓存配置分享”的完整攻略。 一、背景介绍 Varnish是一款高性能的HTTP反向代理服务器,它可以加速站点的访问速度,并为站点提供缓存服务。在使用Varnish时,我们需要合理配置缓存策略来提高缓存命中率和性能。 二、缓存策略配置 1. 确定缓存内容 首先,我们需要确定哪些内容需要缓存。可以根据站点的特点和访问…

    Java 2023年6月16日
    00
  • Spring JPA的实体属性类型转换器并反序列化工具类详解

    Spring JPA实体属性类型转换器并反序列化工具类详解 背景介绍 在开发中,我们经常会用到Spring Data JPA(Java Persistence API)来访问数据库并进行数据持久化,而在实际开发中,我们会面临很多原本无法直接与数据库进行映射的数据类型。这时候我们需要将其转换为数据库可以映射的类型进行存储操作。针对这一问题,Spring提供了很…

    Java 2023年5月20日
    00
  • Java运行期注解的作用是什么?

    Java运行期注解是在运行期间动态地修改代码行为或元数据的方式。在Java语言中,使用注解可以为类、方法、字段等元素添加额外的元数据信息,特别是在框架应用中,注解是必要的成分之一。 Java运行期注解的作用包括但不限于以下几个方面: 1. 解耦 运行期注解是通过将元数据信息附加在程序元素上而实现的,整个注解体系实现了代码与元数据之间的解耦。开发人员在不破坏原…

    Java 2023年5月11日
    00
  • Spring、SpringMVC和SpringBoot的区别及说明

    下面是关于“Spring、SpringMVC和SpringBoot的区别及说明”的完整攻略。 Spring、SpringMVC和SpringBoot的介绍 Spring Spring是一个企业级框架,主要用于开发Java应用程序。Spring框架提供了大量的功能,如依赖注入、面向切面编程、JDBC等等。Spring框架被设计为一个轻量级的框架,能够集成已有的…

    Java 2023年5月15日
    00
  • Android自定义View仿腾讯TIM下拉刷新View

    对于Android自定义View仿腾讯TIM下拉刷新View的完整攻略,可以分为以下几个步骤: 1. 确定需求,分析原理 在开始编写自定义下拉刷新View之前,我们需要先确定具体的需求,从而了解需要实现的功能点。对于仿腾讯TIM下拉刷新View,需要实现以下功能: 下拉刷新时,显示header并执行刷新操作 上拉加载更多时,显示footer并执行加载更多操作…

    Java 2023年5月26日
    00
  • springboot 在linux后台运行的方法

    在Linux服务器上运行Spring Boot应用程序是一种常见的部署方式。以下是详细讲解Spring Boot在Linux后台运行的方法的完整攻略: 打包应用程序 在部署Spring Boot应用程序之前,我们需要将应用程序打包成可执行的JAR文件。我们可以使用Maven或Gradle来完成此操作。以下是使用Maven打包应用程序的示例: mvn clea…

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