//整合两个输入流
FileInputStream fis1 = new FileInputStream("a.txt");
FileInputStream fis2 = new FileInputStream("b.txt");
SequenceInputStream sis = new SequenceInputStream(fis1, fis2);
FileOutputStream fos = new FileOutputStream("c.txt");
int b;
while((b = sis.read()) != -1) {
fos.write(b);
}
//整合多个输入流
FileInputStream fis1 = new FileInputStream("a.txt");
FileInputStream fis2 = new FileInputStream("b.txt");
FileInputStream fis3 = new FileInputStream("c.txt");
Vector<FileInputStream> v = new Vector<>(); //创建集合对象
v.add(fis1); //将流对象存储进来
v.add(fis2);
v.add(fis3);
Enumeration<FileInputStream> en = v.elements();
SequenceInputStream sis = new SequenceInputStream(en); //将枚举中的输入流整合成一个
FileOutputStream fos = new FileOutputStream("d.txt");
int b;
while((b = sis.read()) != -1) {
fos.write(b);
}
FileInputStream fis = new FileInputStream("e.txt");
ByteArrayOutputStream baos = new ByteArrayOutputStream(); //在内存中创建了可以增长的内存数组
int b;
while((b = fis.read()) != -1) {
baos.write(b); //将读取到的数据逐个写到内存中
}
System.out.println(baos.toString()); //将缓冲区的内容转换为了字符串,在输出语句中可以省略调用toString方法
//序列化:将对象写到文件上
Person p1 = new Person("张三", 23);
Person p2 = new Person("李四", 24);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("e.txt"));
oos.writeObject(p1);
oos.writeObject(p2);
//把整个集合对象一次写入
Person p1 = new Person("张三", 23);
Person p2 = new Person("李四", 24);
Person p3 = new Person("王五", 25);
Person p4 = new Person("赵六", 26);
ArrayList<Person> list = new ArrayList<>();
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("e.txt"));
oos.writeObject(list);
//对象输入流,反序列化
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e.txt"));
Person p1 = (Person) ois.readObject();
Person p2 = (Person) ois.readObject();
//Person p3 = (Person) ois.readObject(); //当文件读取到了末尾时仍要读取时出现EOFException
System.out.println(p1);
System.out.println(p2);
//把整个集合对象一次写出
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e.txt"));
ArrayList<Person> list = (ArrayList<Person>) ois.readObject(); //将集合对象一次读取
for (Person person : list) {
System.out.println(person);
}
拓展:
--------------------------------------------------------------------------------
PrintStream ps = System.out; //获取字节输出流
ps.println(97); //底层通过Integer.toString()将97转换成字符串并打印
ps.write(97); //查找码表,找到对应的a并打印
PrintWriter pw = new PrintWriter(new FileOutputStream("f.txt"),true);//获取字符输出流
pw.write(97);
pw.print(97);
InputStream is = System.in; //获取标准输入流
int x = is.read(); //读取一个字符,转换为int型
System.out.println(x);
is.close(); //如果不和文件关联,输入流只有一个,关闭了就算换个对象名也无法使用
System.setIn(new FileInputStream("a.txt")); //改变标准输入流
System.setOut(new PrintStream("b.txt")); //改变标注输出流
InputStream is = System.in; //获取标准的键盘输入流,默认指向键盘,改变后指向文件
PrintStream ps = System.out; //获取标准输出流,默认指向的是控制台,改变后就指向文件
int b;
while((b = is.read()) != -1) { //等同于文件内容的拷贝
ps.write(b);
}
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//InputStreamReader转换流
String line = br.readLine(); //获取字符串并输出
System.out.println(line);
br.close();
RandomAccessFile raf = new RandomAccessFile("g.txt", "rw"); //用于读写文件
raf.write(97); //写文件
int x = raf.read(); //读文件
raf.seek(0); //在指定位置设置指针
Properties prop = new Properties(); //Properties是双列集合,是Hashtable的子类
prop.put("abc", 123); //与map类的方法一样
System.out.println(prop);
输入流整合+序列化&反序列化
猜你喜欢
转载自blog.csdn.net/qq_37822034/article/details/82931567
今日推荐
周排行