一:对象读写流
import java.io.*; class ObjectStreamDemo { public static void main(String[] args) throws Exception { //writeObj(); readObj(); } public static void readObj() throws Exception { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.txt")); Person p = (Person)ois.readObject(); System.out.println(p); ois.close(); } public static void writeObj() throws Exception { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.txt")); oos.writeObject(new Person("zhangsan",16)); oos.close(); } }
import java.io.*;
class Person implements Serializable
{
String name;
int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public String toString()
{
return name + "::" + age;
}
}
注意:UID号,给类定义一个标识。
静态是不能被序列化的。
transient修饰后的堆内存中对象属性也不会被序列化
二:管道流 :PipedInputStream PipedOutputStream
是和多线程相结合的一种流对象
connect():读写流对象相连接的方法
import java.io.*;
class Read implements Runnable
{
private PipedInputStream in;
Read(PipedInputStream in)
{
this.in = in;
}
public void run()
{
try
{
byte[] buf = new byte[1024];
int len = in.read(buf);
String s = new String(buf,0,len);
System.out.println(s);
in.close();
}
catch (IOException e)
{
throw new RuntimeException("管道读取流失败");
}
}
}
class Write implements Runnable
{
private PipedOutputStream out;
Write( PipedOutputStream out)
{
this.out = out;
}
public void run()
{
try
{
out.write("piped lai le".getBytes());
out.close();
}
catch (IOException e)
{
throw new RuntimeException("管道读取流失败");
}
}
}
class PipeStreamDemo
{
public static void main(String[] args) throws IOException
{
PipedInputStream in = new PipedInputStream();
PipedOutputStream out = new PipedOutputStream();
in.connect(out);
Read r = new Read(in);
Write w = new Write(out);
new Thread(r).start();
new Thread(w).start();
}
}