08_1_IO

1. 输入/输出流的分类

java.io包中定义了多个流类型(类或抽象类)来实现输入/输出功能;可以从不同的角度对其进行分类:

按数据流的方向不同可以分给输入流和输出流。

按处理数据单位不同可以分为字节流和字符流。

按照功能不同可以分为节点流和处理流。

字节流

字符流

输入流

InputStream

Reader

输出流

OutputStream

Write

2. 节点流和处理流

节点流为可以从一个特定的数据源(节点)读写数据(如:文件,内存)

处理流是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。

3. 节点流类型

类型

字符流

字节流

File(文件)

FileReader FileWriter

FileInputStream FileOutputStream

Memory Array

CharArrayReader

CharArrayWriter

ByteArrayInputStream

ByteArrayOutputStream

Memory String

StringReader

StringWriter

Pipe(管道)

PipedReader

PipedWriter

PipedInputStream

PipedOutputStream

4. 处理流类型

处理类型

字符流

字节流

Buffering

BufferedReader

BufferedWriter

BufferedInputStream

BufferedOutputStream

Filtering

FilterReader

FilterWriter

FilterInputStream

FilterOutputStream

Converting between bytes and character

InputStreamReader

OutputStreamWriter

Object Serialization

ObjectInputStream

ObjectOutputStream

Data coversion

DataInputStream

DataOutputStrearm

Counting

LineNumberReadeer

LineNumberInputStream

Peeking ahead

PushbackReader

PushbackInputStream

Printing

PrintWriter

PrintStream

5. Object流

serializable 序列化,将一个对象,转换为字节流保存到硬盘。

package Test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable; public class TestObjectIO { public static void main(String[] args) throws Exception {
T t = new T();
t.k = 30;
FileOutputStream fos = new FileOutputStream("F:/TestObjectIO.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(t);
oos.flush();
oos.close();
FileInputStream fis = new FileInputStream("F:/TestObjectIO.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
T a = (T)ois.readObject();
System.out.println(a.i +" " + a.j + " " + a.d + " " + a.k);
fos.close();
fis.close();
ois.close();
}
}
class T implements Serializable { int i = 10;
int j = 20;
double d = 3.2;
//transient 在序列化的时候,不予考虑,也及读出来之后为0
transient int k = 15;
}

08_1_IO的更多相关文章

随机推荐

  1. 获取项目路径js

    var curWwwPath=window.document.location.href;           //获取主机地址之后的目录,如: myproj/view/my.jsp          ...

  2. 配置matcaffe 遇到的两个坑

    1. 问题 (1) Invalid MEX-file '/root/caffe/matlab/+caffe/private/caffe_.mexa64': /matlab/r2016a/bin/gln ...

  3. [转]IE和FireFox中JS兼容之event .

    转载于:http://blog.csdn.net/jiachunfeng/article/details/6448186 http://justcoding.iteye.com/blog/587876 ...

  4. python的面向对象的特性(继承、封装、多态)

    创建自已对象就python非常核心的概念,事实上,python被称为面向对象语言,本章会介绍如何创建对象.以及面向对象的概念:继承.封装.多态. 多态: 可对不同类的对象使用同样的操作. 封装:对外部 ...

  5. ZK使用

    1. 关注问题 1. zookeeper集群如何保证请求的均匀分布? 由client建立连接时会随机取server保证均匀分布, 2.已布置完成的ZK集群如何扩容? 修改配置后逐台重启即可 2. ZK ...

  6. 13、Selenium+python+API分类总结

    Selenium+python+API分类总结 http://selenium-python.readthedocs.org/index.html 分类 方法 方法描述 客户端操作 __init__( ...

  7. pta5-9 Huffman Codes (30分)

    5-9 Huffman Codes   (30分) In 1953, David A. Huffman published his paper "A Method for the Const ...

  8. join() 和 sleep() 区别

    来源于<Java多线程编程核心技术> 一.join() 作用 在很多情况,主线程创建并启动子线程,如果子线程中需要进行大量的耗时计算,主线程往往早于子线程结束.这时,如果主线程想等待子线程 ...

  9. Object公用方法

    Object是所有类的父类,任何类都默认继承Object. Object类到底实现了哪些方法?   1.clone方法 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否 ...

  10. php静态变量static

    静态变量 function test() { static $a = 0; echo $a; $a++; } test(); test(); test();