黑马程序员技术交流社区

标题: IO流 操作对象 [打印本页]

作者: wws1214    时间: 2015-7-18 14:43
标题: IO流 操作对象


1、ObjectOutputStream

2、管道流 : PipedInputStream  PipedOutputStream
        输入输出可以直接进行连接,通过结合线程使用

       
3、RandomAccessFile
        该类不算是IO体系中子类
        而是直接继承自Object

        但是它是IO包中的成员。因为它具备读与写功能。
        内部封装了一个数组,而且通过指针对数组的元素进行操作。
        可以通过getFilePointer获取指针位置
        同时可以通过seek改变指针的位置

        其实完成读写的原理就是内部封装了字节输入流和输出流。

        通过构造函数可以看出,该类只能操作文件
        而且操作文件还有模式:只读r,,读写rw等
       
        如果模式为只读r :不会创建文件买回去读取一个已有文件,如果该文件不存在,则异常
        如果模式为rw    :操作的文件不存在,会自动创建。如果存在则不会覆盖
       
       

4、操作基本数据类型 DataInputStream  DataOutputStream

        public static void readData()throws IOException
        {
                DataInputStream dis=new DataInputStream(new FileInputStream("E:\\java_heima\\data.txt"));
               
                int num=dis.readInt();
                boolean b=dis.readBoolean();
                double d=dis.readDouble();
                System.out.println(num+":"+b+":"+d);
                dis.close();
        }
        public static void writeDate()throws IOException
        {
                DataOutputStream dos=new DataOutputStream(new FileOutputStream("E:\\java_heima\\data.txt"));
               
                dos.writeInt(234);
                dos.writeBoolean(false);
                dos.writeDouble(1234.1234);
               
                dos.close();
        }

5、操作字节数组 ByteArrayInputStream  ByteArrayInputStream  
        ByteArrayInputStream  在构造的时候,需要接收数据,而且数据源是一个字节数组

        ByteArrayInputStream  在构造的时候,不用定义数据目的,因为该对象中已经内部封装了可变长度的字节数组。这就是数据的目的地

        因为这两个流对象都操作的数组,并没有使用系统资源。
        所有,不用进行close关闭




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2