`
红桃貳
  • 浏览: 40309 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java 学习笔记- I/O - Object Stream

阅读更多

Data Stream 支持primitive 类型I/O,而Object Stream 支持Object类型的I/O.

常用Object Stream classes: ObjectInputstream 和ObjectOutputStream.构造方法:ObjectInputStream(InputStream in),ObjectOutputStream(OutputStream out)

Object Stream classes 都实现ObjectInput 和ObjectOutput接口. 然而这两个接口又继承了data stream 中的DataInput 与DataOutput两个接口,所以,在Object  Stream的类中包含了操作primitive 类型的所以方法。

也就是说,也可以用Object Stream类型的类来处理Data stream类型的数据。

 

代码:

package io.objectstream;

import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.math.BigDecimal;
import java.util.Calendar;

public class ObjectStreams {

    static final String dataFile = "D:\\360云盘\\javase\\src\\io\\invoiceobjectdata";

    static final BigDecimal[] prices = { new BigDecimal("19.99"), new BigDecimal("9.99"), new BigDecimal("15.99"),
            new BigDecimal("3.99"), new BigDecimal("4.99") };

    static final int[] units = { 12, 8, 13, 29, 50 };

    static final String[] descs = { "Java T-shirt", "Java Mug", "Duke Juggling Dolls", "Java Pin", "Java Key Chain" };

    public static void main(String[] args) throws IOException {
        ObjectOutput out = null;
        try {
            out = new ObjectOutputStream(new FileOutputStream(dataFile));
            out.writeObject(Calendar.getInstance());
            for (int i = 0; i < prices.length; i++) {
                out.writeObject(prices[i]);
                out.writeInt(units[i]);
                out.writeUTF(descs[i]);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (out != null) {
                out.close();
            }
        }

        // ==========================Read data file=============================

        BigDecimal price = null;
        BigDecimal total = BigDecimal.ZERO;
        int unit;
        String desc;
        ObjectInput in = null;
        try {
            in = new ObjectInputStream(new FileInputStream(dataFile));
            Calendar date = null;
            date = (Calendar) in.readObject();
            System.out.format("On %tA, %<tB %<te, %<tY:%n", date);
            while (true) {
                price = (BigDecimal) in.readObject();
                unit = in.readInt();
                desc = in.readUTF();
                System.out.format("You ordered %d units of %s at $%.2f%n", unit, desc, price);
                total = total.add(price.multiply(new BigDecimal(unit)));
            }
        } catch (EOFException e) {
            System.out.format("For a TOTAL of: $%.4f%n", total);
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (in != null)
                in.close();
        }
    }
}

 

1
5
分享到:
评论

相关推荐

    java全套笔记 来自狂神说java笔录.zip

    11. **Java IO/NIO**:深入理解流的分类,学习非阻塞I/O模型NIO(New Input/Output)。 12. **Java 8及更高版本新特性**:包括Lambda表达式、Stream API、Optional类、日期时间API的改进等。 这些笔记内容全面覆盖...

    java学习笔记

    ### Java学习笔记知识点总结 #### 一、Java/JavaEE概览 - **定义与特点**: - **Java**是一种广泛使用的面向对象的编程语言,由Sun Microsystems于1995年推出。 - **JavaEE**是Java平台企业版的简称,是一套为...

    java笔记

    文档“Java学习笔记(必看经典).doc”应该包含了丰富的教程和实战指导。 Java的学习可以分为几个主要部分: 1. **基础知识**:首先,Java的基础包括语法结构,如变量、数据类型、运算符、流程控制(条件语句、循环...

    struts2学习笔记三

    在本篇“Struts2学习笔记三”中,我们将探讨Struts2中处理文件上传的核心组件和拦截器,以及如何在实际应用中实现文件上传。 1. 文件上传组件: - jspSmartUpload:这是一个早期用于模型1的上传组件,现在已经被更...

    达内Java笔记 各种总结

    Java的I/O流处理涵盖了文件读写、网络通信等场景。流分为字节流(Byte Stream)和字符流(Character Stream),又有输入流(InputStream/Reader)和输出流(OutputStream/Writer)。缓冲流(Buffered Stream)用于...

    java做题笔记

    根据提供的文件信息,“Java做题笔记”,我们来深入探讨与Java编程语言相关的知识点。由于给定的部分内容似乎并不包含实际的文本信息,我们将基于标题、描述以及标签来展开讨论。 ### Java基础知识 #### 1. Java...

    struts2四天的学习笔记

    13. ** strut2四天笔记**:这份学习笔记可能涵盖了以上所有知识点,包括如何创建Action,配置struts.xml,使用OGNL表达式,处理异常,以及实践中的各种技巧和最佳实践。 在四天的学习过程中,你应该通过实践和理解...

    java学习资料

    Java I/O(输入/输出)系统是另一个关键领域,包括文件操作、流(Stream)和序列化。这些知识在处理数据读写、网络通信等方面非常实用。 Java还包含丰富的类库,如多线程(Thread)、并发(Concurrency)工具、网络...

    ACE网络编程学习笔记

    ### ACE网络编程学习笔记知识点详解 #### 一、面向对象中间件体系结构 **1.1 主机基础设施中间件** 主机基础设施中间件的主要目的是封装不同的底层实现,例如socket和线程,提供统一的接口给上层应用。这种封装有...

    struts2学习笔记总结

    本笔记将全面总结Struts2的核心概念、主要功能以及实际开发中的应用。 一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是...

    Java基础笔记(包括底层原理)

    Stream API是Java 8引入的新特性,用于更简洁地处理集合数据,包括获取流、中间操作和终端操作。方法引用进一步简化了代码,可以直接引用类的静态方法、实例方法或构造函数。 第二章涵盖了Object类,它是所有Java类...

    java三大框架笔记,没有spring

    结合提供的文件名,"hibernate学习笔记.doc"可能涵盖了Hibernate的基本概念、配置、实体映射、查询操作以及事务管理等内容。而"Struts2学习笔记2011.doc"则可能详细讲解了Struts2的架构、配置、拦截器、结果类型以及...

    Struts2_学习笔记.zip

    这个"Struts2_学习笔记"包含了关于Struts2框架的深入学习资料,是理解并掌握Struts2核心概念和技术的关键。 Struts2的核心设计理念是模型-视图-控制器(MVC)架构模式,它简化了Java Web开发,将业务逻辑、数据展示...

    学习笔记—Struts2

    阅读《Struts2权威指南》等书籍,访问官方文档(http://struts.apache.org/),以及在博客网站(如iteye.com)上查找相关的学习笔记和实战案例,都能帮助深入理解和掌握Struts2框架。在实际项目中实践,将理论知识...

    Effective Java.zip

    《Effective Java》是一本经典Java编程指南,作者是Joshua Bloch,这本书深入探讨了...以上内容仅是《Effective Java》各章节的部分知识点概述,书中还有更多关于Java编程的最佳实践和深入理解等待读者去发掘和学习。

    IO操作.pdf

    包括`BufferedInputStream`、`BufferedOutputStream`、`BufferedReader`和`BufferedWriter`,这些类通过内存缓冲区提高读写性能,减少频繁的磁盘I/O操作。 5. **对象流(Object Stream)** `ObjectInputStream`和...

    Java基础&&java面向对象编程

    Java是一种广泛使用的高级...李兴华老师的笔记可能详细介绍了这些概念,并通过实例深入浅出地讲解了Java基础和面向对象编程,包括Java 8的新特性。通过学习这些内容,开发者能够更好地理解和应用Java,提高编程技能。

Global site tag (gtag.js) - Google Analytics