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(); } } }
相关推荐
11. **Java IO/NIO**:深入理解流的分类,学习非阻塞I/O模型NIO(New Input/Output)。 12. **Java 8及更高版本新特性**:包括Lambda表达式、Stream API、Optional类、日期时间API的改进等。 这些笔记内容全面覆盖...
### Java学习笔记知识点总结 #### 一、Java/JavaEE概览 - **定义与特点**: - **Java**是一种广泛使用的面向对象的编程语言,由Sun Microsystems于1995年推出。 - **JavaEE**是Java平台企业版的简称,是一套为...
文档“Java学习笔记(必看经典).doc”应该包含了丰富的教程和实战指导。 Java的学习可以分为几个主要部分: 1. **基础知识**:首先,Java的基础包括语法结构,如变量、数据类型、运算符、流程控制(条件语句、循环...
在本篇“Struts2学习笔记三”中,我们将探讨Struts2中处理文件上传的核心组件和拦截器,以及如何在实际应用中实现文件上传。 1. 文件上传组件: - jspSmartUpload:这是一个早期用于模型1的上传组件,现在已经被更...
Java的I/O流处理涵盖了文件读写、网络通信等场景。流分为字节流(Byte Stream)和字符流(Character Stream),又有输入流(InputStream/Reader)和输出流(OutputStream/Writer)。缓冲流(Buffered Stream)用于...
根据提供的文件信息,“Java做题笔记”,我们来深入探讨与Java编程语言相关的知识点。由于给定的部分内容似乎并不包含实际的文本信息,我们将基于标题、描述以及标签来展开讨论。 ### Java基础知识 #### 1. Java...
13. ** strut2四天笔记**:这份学习笔记可能涵盖了以上所有知识点,包括如何创建Action,配置struts.xml,使用OGNL表达式,处理异常,以及实践中的各种技巧和最佳实践。 在四天的学习过程中,你应该通过实践和理解...
Java I/O(输入/输出)系统是另一个关键领域,包括文件操作、流(Stream)和序列化。这些知识在处理数据读写、网络通信等方面非常实用。 Java还包含丰富的类库,如多线程(Thread)、并发(Concurrency)工具、网络...
### ACE网络编程学习笔记知识点详解 #### 一、面向对象中间件体系结构 **1.1 主机基础设施中间件** 主机基础设施中间件的主要目的是封装不同的底层实现,例如socket和线程,提供统一的接口给上层应用。这种封装有...
本笔记将全面总结Struts2的核心概念、主要功能以及实际开发中的应用。 一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是...
Stream API是Java 8引入的新特性,用于更简洁地处理集合数据,包括获取流、中间操作和终端操作。方法引用进一步简化了代码,可以直接引用类的静态方法、实例方法或构造函数。 第二章涵盖了Object类,它是所有Java类...
结合提供的文件名,"hibernate学习笔记.doc"可能涵盖了Hibernate的基本概念、配置、实体映射、查询操作以及事务管理等内容。而"Struts2学习笔记2011.doc"则可能详细讲解了Struts2的架构、配置、拦截器、结果类型以及...
这个"Struts2_学习笔记"包含了关于Struts2框架的深入学习资料,是理解并掌握Struts2核心概念和技术的关键。 Struts2的核心设计理念是模型-视图-控制器(MVC)架构模式,它简化了Java Web开发,将业务逻辑、数据展示...
阅读《Struts2权威指南》等书籍,访问官方文档(http://struts.apache.org/),以及在博客网站(如iteye.com)上查找相关的学习笔记和实战案例,都能帮助深入理解和掌握Struts2框架。在实际项目中实践,将理论知识...
《Effective Java》是一本经典Java编程指南,作者是Joshua Bloch,这本书深入探讨了...以上内容仅是《Effective Java》各章节的部分知识点概述,书中还有更多关于Java编程的最佳实践和深入理解等待读者去发掘和学习。
包括`BufferedInputStream`、`BufferedOutputStream`、`BufferedReader`和`BufferedWriter`,这些类通过内存缓冲区提高读写性能,减少频繁的磁盘I/O操作。 5. **对象流(Object Stream)** `ObjectInputStream`和...
Java是一种广泛使用的高级...李兴华老师的笔记可能详细介绍了这些概念,并通过实例深入浅出地讲解了Java基础和面向对象编程,包括Java 8的新特性。通过学习这些内容,开发者能够更好地理解和应用Java,提高编程技能。