import java.io.*;
import java.util.ArrayList;
/*
练习:
序列化集合
当我们想在文件中保存多个对象的时候
可以把多个对象存储到一个集合中
对集合进行序列化和反序列化
分析:
1.定义一个存储Person对象的Arraylist集合
2.往Arraylist集合中存储Person对象
3.创建一个序列化流的ObjectOutputStream对象
4.使用ObjectOutputStream对象中的方法writerObject,对集合进行序列化
5.创建一个反序列化ObjectInputStream对象
6.使用ObjectInputStream对象中的方法readObject读取文件中保存的集合
7.把Object类型的集合转换成为Arraylist类型
8.遍历Arraylist集合
9.释放资源
*/
public class Demo05 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//1.定义一个存储Person对象的Arraylist集合
ArrayList<Person> arr = new ArrayList<>();
//2.往Arraylist集合中存储Person对象
arr.add(new Person("张三",23));
arr.add(new Person("李四",23));
arr.add(new Person("王五",23));
arr.add(new Person("马六",23));
// 3.创建一个序列化流的ObjectOutputStream对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:\\Users\\why\\Desktop\\untitled\\src\\test\\a.txt"));
//4.使用ObjectOutputStream对象中的方法writerObject,对集合进行序列化
oos.writeObject(arr);
//5.创建一个反序列化ObjectInputStream对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("C:\\Users\\why\\Desktop\\untitled\\src\\test\\a.txt"));
//6.使用ObjectInputStream对象中的方法readObject读取文件中保存的集合,会生成一个class文件。
Object o = ois.readObject();
//7.把Object类型的集合转换成为Arraylist类型(强转)
ArrayList<Person> arr1= (ArrayList<Person>)o;
//8.遍历Arraylist集合
for (Person p : arr1) {
System.out.println(p);
}
//9.释放资源
ois.close();
oos.close();
}
}
Flux d'impression
import java.io.FileNotFoundException;
import java.io.PrintStream;
public class Demo06 {
public static void main(String[] args) throws FileNotFoundException {
//创建一个打印流PrintStream对象,构造方法中绑定要输出的目的地
PrintStream ps = new PrintStream("src\\a1.txt");
//如果使用继承自父类的write方法写数据,那么查看数据的时候会查询编码表97->a
ps.write(97);
//如果使用自己特有的方法print/printLn方法写数据,写的数据据就是原样输出97->97
ps.println(97);
ps.close();
}
}
La sortie de la destination spécifiée du flux d'impression peut être sortie dans le dossier
import java.io.FileNotFoundException;
import java.io.PrintStream;
public class Demo07 {
public static void main(String[] args) throws FileNotFoundException {
System.out.println("这个是在控制台输出的内荣");
PrintStream ps = new PrintStream("src\\b.txt");
System.setOut(ps);//把输出语句的目的地改变为打印流的目的地
ps.println("这个是在输出流的打印流中输出的打印");
ps.close();
}
}