IO流(序列流)
序列流:
* 可以把多个字节输入流整合成一个,从序列流中读取数据时,将从被整合的第一个流开始读,读完一个之后继续读第二个。
整合方式:
* Seq uenceInputStream ( InputStream ,InputStream )
IO流(序列流整合多个)
public static void main(String[] args) throws IOException { FileInputStream fis1 = new FileInputStream("test1.txt"); FileInputStream fis2 = new FileInputStream("test2.txt"); FileInputStream fis3 = new FileInputStream("test.txt"); Vector<InputStream> v = new Vector<>(); v.add(fis1); v.add(fis2); v.add(fis3); Enumeration<InputStream> en = v.elements(); SequenceInputStream sis = new SequenceInputStream(en); FileOutputStream fos = new FileOutputStream("list.txt"); int b; while ((b = sis.read()) != -1) { fos.write(b); } sis.close(); fos.close(); }
IO流(内存输出流)
内存输出流:
* 该输出可以向内存中写数据,把内存当作一个缓冲区,写出之后可以一次性获取出所有数据。
public static void main(String[] args) throws IOException { FileInputStream fis1 = new FileInputStream("test1.txt"); ByteArrayOutputStream by = new ByteArrayOutputStream(); // 在内存中创建了可以增长的内存数组 int b; while ((b = fis1.read()) != -1) { // 将读到的数据逐个写到内存中 by.write(b); } System.out.println(by); // 将缓冲区的内容转换成了字符串 fis1.close(); }
IO流(随机访问流和读写数据)
随机访问流:
* RandomAccessFile类不属于流,是Object类的子类,但他融合了InputStream和OutputStream的功能。支持对随机访问文件的读取和写入。
seek():设置指定位置读和写
IO流(对象操作流 )
对象操作流 :该流可以将一个对象写出。或者读取一个对象到程序中,也就是执行了序列化和反序列化的操作。
使用方式:
new ObjectOutputStream(OutputStream),writeObject( )。