转换流_序列化流
转换流
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class IOStreamRW { public static void main(String[] args) throws IOException { //字符—>字节 //Java底层调用FileOutputStream以字节形式写出数据 //OutputStreamWriter将传入的字符转化为字节 OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("E:\\a.txt"),"utf-8"); //这里可以规定解析时的编码 ow.write("abcdefgszbjkffasgszbjzxnbzlkzlxzkj"); ow.close(); //字节—>字符 //Java底层调用FileInputStream以字节形式读取数据 //InputStreamReader将读取到的字节转化为字符 InputStreamReader ir = new InputStreamReader(new FileInputStream("E:\\a.txt")); //定义一个字符数组来存储读取到的字节数据 char[] c = new char[10]; int len = -1; //读取到字节数据后以字符形式输出 while((len = ir.read(c))!=-1){ System.out.println(new String(c, 0, len)); } ir.close(); } }
序列化流
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class SerializableDemo { public static void main(String[] args) throws Exception{ //序列化 //对象—>字节 Person p = new Person(); p.setName("伍六七"); p.setAge(18); p.setId("零零柒"); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\\d.data")); oos.writeObject(p); oos.close(); /* //反序列化 //字节—>对象 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\d.data")); //读取文件中字节数据,然后用ObjectInputStream将字节数据转换为对象 Person p = (Person)ois.readObject(); ois.close(); System.out.println(p.getName()); System.out.println(p.getAge()); */ } } //创建Person类提供get_set方法 //一个对象想要被序列化,它所对应的类必须实现Serializable接口 class Person implements Serializable{ //版本号 //没有手动指定版本号,会自动计算一个版本号 //为了让序列化出去的对象可以反序列回来,需要手动指定版本号,防止类中对象发生改变造成数据丢失 private static final long serialVersionUID = -5209149214681656519L; private String name; private int age; //用static/transient修饰的属性不会被序列化,不占内存 //static修饰后本身不需要被序列化,transient则是强制不被序列化 static String id; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getId() { return id; } public void setId(String id) { this.id = id; } }
注:集合不允许被一次性序列化出去,即一次只能序列化一个对象