(黑马程序员)IO中的其他功能流对象总结(一)
来源:互联网 发布:怎样用itunes安装软件 编辑:程序博客网 时间:2024/05/17 09:42
IO中的其他功能流对象:
1,打印流:
PrintStream:字节打印流。
特点:
1,构造函数接收File对象,字符串路径,字节输出流。意味着打印目的可以有很多。
2,该对象具备特有的方法 打印方法 print ,println,可以打印任何类型的数据。
3,特有的print方法可以保持任意类型数据表现形式的原样性,将数据输出到目的地。
对于OutputStream父类中的write,是将数据的最低字节写出去。
PrintWriter:字符打印流。
特点:
1,当操作的数据是字符时,可以选择PrintWriter,比PrintStream要方便。
2,它的构造函数可以接收 File对象,字符串路径,字节输出流,字符输出流。
3,构造函数中,如果参数是输出流,那么可以通过指定另一个参数true完成自动刷新,该true对println方法有效。
什么时候用?
当需要保证数据表现的原样性时,就可以使用打印流的打印方法来完成,这样更为方便。
保证原样性的原理:其实就是将数据变成字符串,在进行写入操作。
2.SequenceInputStream:
特点:
1,将多个字节读取流和并成一个读取流,将多个源合并成一个源,操作起来方便。
构造函数接受的数据类型是枚举,Enumeration<FileInputStream> en = v.elements();
2,需要的枚举接口可以通过Collections.enumeration(collection);
应用举例:
ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
for(int x=1; x<=3; x++){
al.add(new FileInputStream(x+".txt"));
}
存储流对象的集合
Enumeration<FileInputStream> en = Collections.enumeration(al);
返回一个流对象集合的枚举作为参数传给序列流
SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream("1234.txt");
byte[] buf = new byte[1024];
int len = 0;
while((len=sis.read(buf))!=-1){
fos.write(buf,0,len);
}
fos.close();
sis.close();
}}
3.ObjectInputStream 和 ObjectOutputStream
是操作对象的流,对象序列化与反序列化,即把对象存入硬盘盒从硬盘中读对象出来。存对象的文件一般名字以.object结尾。ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。
它们的构造函数接受的是字节流对象。用writeObject和readObject方法写对象到基本字节流和从流中读对象。
public static void main(String[] args) throws IOException, ClassNotFoundException {
writeObj();
readObj();
}
public static void readObj() throws IOException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.object"));
//对象的反序列化。
Person p = (Person)ois.readObject();
System.out.println(p.getName()+":"+p.getAge());
ois.close();
}
public static void writeObj() throws IOException, IOException {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.object"));
//对象序列化。 被序列化的对象必须实现Serializable接口。
oos.writeObject(new Person("小强",30));
oos.close();
}}
4.接口 Serializable
Serializable:用于给被序列化的类加入ID号。
用于判断类和对象是否是同一个版本。 如果接收者类的 serialVersionUID 与对应的发送者的类的版本号不同,则反序列化将会导致 InvalidClassException。可序列化类可以通过声明名为 "serialVersionUID" 的字段(该字段必须是静态 (static)、最终
- (黑马程序员)IO中的其他功能流对象总结(一)
- (黑马程序员)IO流中的其他类总结(二)
- 黑马程序员——Java基础---io流(io中的其他对象)
- 黑马程序员---IO包中的其他类(一)
- 黑马程序员-IO流其他流对象
- 黑马程序员15.其他对象&IO流
- (黑马程序员)学习笔记,其他IO流对象
- 黑马程序员---IO流1(其他对象、FileWriter、FileReader)
- 黑马程序员_Java_Properties对象和IO中的其他对象
- 黑马程序员----Java中的其他IO流
- 黑马程序员 总结(十九)——I/O流(File类和Properties类以及IO包中的其他流对象) .
- 【黑马程序员】java 中的--------------其他流对象
- 黑马程序员_IO流中的其他对象
- 黑马程序员--IO流(File对象功能)
- 黑马程序员_Java基础_其他对象及IO流(一)_18
- 黑马程序员——java基础知识之其他对象和IO流(一)
- 黑马程序员-javaIO总结 续——其他常用与IO流有关的对象
- 黑马程序员----IO流(其他)
- Android 广播接收器注册与注销源码分析
- 备忘:myeclipse9.0 下安装svn
- Android --- ColorFilter使用
- Task和Activity相关
- Tiny210 中断控制LED灯的亮和灭
- (黑马程序员)IO中的其他功能流对象总结(一)
- 解决AS3 Socket编程中最令人头疼的问题
- 【转】Android特效 五种Toast详解
- 剪枝算法小节
- linux_driver_ioctl
- (黑马程序员)IO流中的其他类总结(二)
- 网站分析工具对比表
- mac oS抓包
- ORA-01653:表空间扩展失败的问题