输出流和输入流的包装类:
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
分享到:
相关推荐
160个项目开发实例,聊天项目,小游戏适和新手学习(项目采用GBK编码)。 import java.util.*; import java.io.*; import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*;...
JavaSE核心 异常处理、多线程基础、IO系统、网络编程、Java反射机制、JVM性能调优(JVM内存结构剖析、GC分析及调优、JVM内存参数优化)、Java泛型、JDK新特性 熟练掌握JavaSE核心内容,特别是IO和多线程;...
各种基础知识,包括计组、计网、Java、MySQL、Redis、k8s、zk 等等 操作系统 数据结构 Linux运维 P8架构 面试题汇总 目录 :面向对象,集合,IO流等 :HashMap,ConcurrentHashMap扩容原理等 :线程状态,...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
课程实验基于Java实现的分布式存储系统源码+项目说明.tar 项目概述与技术点: * 参照**GFS**(Google File System)中心化思想自主完成系统架构设计,完成技术方案编写 * 基于文件元数据服务实现**自定义注册中心**,...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
需要搜索引擎对于人脸数据进行初步筛选到一个较小的范围后在利用虹软的SDK进行测试,值得一提的是,博主多次测试后Milvues返回的匹配率足以满足人脸匹配的要求,Milvus的安装部署和使用文档参考 ...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...