
输出流和输入流的包装类:
DataInputStream : 通过传入一个InputStream对象实例来实现对该输入流的包装,提供了一些直接在文件中读取java基本类型数据的方法,比如readDouble() ,readInt()等等方法,需要注意的是readUTF()方法读取的数据都是通过DataOutputStream中writeUTF()方法对应写入的数据,否则将会出现问题。(因为writeUTF方法将会在写入的数据之中加入一些额外的信息——写入数据的长度)
DataOutputStream : 通过传入一个OutputStream对象实例来实现对该输出流的包装,提供了一些直接在文件中写入java基本类型数据的方法,比如writeDouble() ,writeShort()等等方法,需要注意的是writeBytes()方法和writeChars()方法在DataInputStream 当中没有相对应的读取方法,这两个方法都是写入一串字符串,只不过一个是按照字节顺序,一个是按照字符顺序。为什么在对应的输入流对象当中没有读取一串字符串的方法呢?这是因为在读取的时候程序不知道需读取字符串的大小,也就是不知道何处是字符串的结束位置。所以没有办法读取一个完整的字符串。而readUTF() 能读取字符串是因为在用writeUTF()写入数据(字符串)时就指定了数据的大小,自然而然的就知道结束位置啦。
根据以上几点:就可以很清楚的知道DataInputStream 和DataOutputStream 使用的环境了:
1.操作的是字符流,写入字符数据到文件中。
2.需要一些简单而又直接的方法来对指定文件进行写入或者读取java基本数据类型的操作,而不再是通过直接操作字节数据来完成。
打印流:
printStream 和 printWrite,其中一个是字节打印流,一个是字符打印流。printStream 提供了输出字节流的write方法,而printWrite没有。他们都可以在构造函数中设置是否会自动刷新缓存区,但是printWrite即使是设置了但如果调用的不是printf,format,println其中一个方法,也将不会自动清空缓存区。即使碰到了输出‘\n’等换行符。
另外他们都可以使用字符串格式化功能(printf,format)。这个是他们的一个很好的功能。
对象序列化流:
objectInputStream 和 objectOutputStream两个包装类,用于从底层输入流中读取对象类型的数据和将对象类型的数据写入到底层输出流中。transient 和 static 修饰的变量将不会被写入或者读取。被写入或读取的对象必须实现serializable接口。
package student;
import java.io.Serializable;
public class Student implements Serializable {
int id;
String name;
int age;
String department;
Student(int id, String name, int age, String department) {
this.id = id;
this.age = age;
this.name = name;
this.department = department;
}
}
package student;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class SerTest {
/**
* @param args
* @throws IOException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws IOException, ClassNotFoundException {
// TODO Auto-generated method stub
Student stu1 = new Student(1,"张三",26,"化雪");
Student stu2 = new Student(2,"李四",26,"数学");
FileOutputStream fos = new FileOutputStream("3.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(stu1);
oos.writeObject(stu2);
oos.close();
FileInputStream fis = new FileInputStream("3.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
stu1 = (Student)ois.readObject();
stu2 = (Student)ois.readObject();
System.out.println(stu1.name);
System.out.println(stu1.age);
System.out.println(stu1.department);
System.out.println(stu1.id);
System.out.println(stu2.name);
System.out.println(stu2.age);
System.out.println(stu2.department);
System.out.println(stu2.id);
}
}

- 大小: 62.8 KB
分享到:
相关推荐
### JAVA 学习必备10个有用的程序片段详解 #### 1. 字符串与整型的相互转换 在 Java 中,我们经常会遇到需要将数字转换为字符串或反之的情况。以下是一个简单的示例: - **从整型转换为字符串**: ```java int ...
在这个项目中,你需要了解Java的基本语法、类和对象、异常处理、IO流等基础知识。 2. **面向对象编程**:京东客服机器人的实现会涉及面向对象的设计思想,包括类的定义、继承、封装和多态性。通过这个项目,你可以...
160个项目开发实例,聊天项目,小游戏适和新手学习(项目采用GBK编码)。 import java.util.*; import java.io.*; import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*;...
Java实验报告是对Java编程语言的学习和实践过程中进行的探索与总结。这份报告可能包含了多个实验项目,旨在帮助学习者深入理解Java的核心概念和技术。通过实验,学生们能够掌握编程技巧,解决实际问题,并提升分析和...
理解这些基础知识是学习Java的第一步,也是编写任何程序的基础。 其次,文件中的题目可能涉及到面向对象编程的概念,包括类、对象、封装、继承、多态。这是Java的核心特性,学生需要深入理解类的设计,如何通过对象...
【压缩包子文件的文件名称列表】"奥运申办国投票系统"表明项目代码可能包含主程序、类库、配置文件等,开发者可以通过查看源代码来学习如何组织项目结构,如何编写模块化的代码,以及如何利用Java的IO流、网络编程...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
这些是Java学习的基石,测验可能涵盖这些基本概念。 2. **面向对象编程**:Java是一种纯面向对象的语言,因此理解类的定义、对象的创建、封装、继承、多态性以及抽象类和接口的使用至关重要。测验可能涉及设计和...
这个计网课程设计提供了完整的Java源代码,可以帮助学习者深入理解Java编程以及游戏逻辑的实现。 首先,我们需要了解Java编程基础。Java是一种面向对象的编程语言,以其跨平台性、安全性及高效性著称。在这个五子棋...
【标题】:“高计10java期中考试试题.rar”是一个包含Java编程相关期中考试试题的压缩文件。这个文件可能由高等教育机构或教师提供,用于帮助学生复习和准备Java编程课程的中期评估。 【描述】:这个RAR压缩包位于...
Java是企业级应用的首选语言,因此深入理解其核心特性如面向对象编程、异常处理、垃圾回收机制、多线程、集合框架、IO/NIO流、反射和注解等是必不可少的。面试时,面试官可能会询问关于泛型、equals()与hashCode()的...
【Java2 电子教案】的出现,为所有希望学习Java编程语言的教育机构和个人提供了一份宝贵的资源。这份教案详尽地覆盖了Java2平台的核心技术和概念,能够帮助学习者从基础到高级应用,全面掌握Java编程的精髓。 在...
实验报告的主题是“计科1801_孔德彬_Java实验报告1”,涉及到一个Java编程项目,目的是设计和实现一个小说分析软件。这个软件能够从服务器上加载小说,并进行一系列文本分析。以下是该实验涉及的主要知识点: 1. **...
面试中常问的Java知识点有:垃圾回收机制、异常处理、集合框架(如ArrayList、LinkedList、HashMap等)、多线程、IO流、反射、设计模式等。此外,JVM(Java虚拟机)的工作原理,如内存模型、类加载机制也是重点。 3...
1. **读取文件**:首先,你需要使用`java.io`包中的`FileReader`或`BufferedReader`类来读取文本文件的内容。`BufferedReader`通常更高效,因为它可以一次读取一行或者一个字符缓冲区。 ```java File file = new ...
Java的IO流库提供了解决方案,如InputStream和OutputStream用于读写数据,而DataInputStream和DataOutputStream则支持结构化的二进制数据传输。为了保证数据的一致性和完整性,通常会采用特定的协议,比如定义固定的...
2. 类库使用:Java拥有丰富的内置类库,例如IO流、集合框架、GUI组件等。源代码将展示如何利用这些类库来实现文件操作、数据存储、用户界面等功能。 3. 异常处理:Java提供了异常处理机制,通过try-catch-finally...
这需要对数据结构有深入理解,比如使用HashMap存储联系人信息,同时利用Java的IO流处理头像文件。自定义头像可能涉及图像处理库,如JavaFX或Apache Batik,用于读取、显示和修改图片。 邮件管理是CoolMail的核心...
【JAVA电子教案】是一套详尽的Java编程教学资源,旨在为学习者提供全面而深入的Java语言知识。这份教程可能包含多个章节,通过PPT的形式呈现,方便教学和自学。下面将对每个章节的主题进行详细解读,以帮助读者更好...
在Java面试中,面试官通常会关注候选人的技术深度、广度以及问题解决能力...而"千方.doc"和"百计.doc"可能包含具体的面试问题及解答,是进一步深入学习的好资源。建议仔细研读并实践其中的示例,以便在面试中表现出色。