IO流知识

  IO流(输入输出是相对java文件的)
        File类
        构造函数只是创建了一个可以访问的路径,并未创建文件夹
        File(File parent, String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
        File(String pathname)
          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
        File(String parent, String child)
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
        File(URI uri)
          通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。
    
        delete()
          删除此抽象路径名表示的文件或目录。
        exists()
          测试此抽象路径名表示的文件或目录是否存在。
        mkdir()
          创建此抽象路径名指定的目录。(只能创建一级目录)
        mkdirs()
          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。(可以创建多级目录)
        length()
          返回由此抽象路径名表示的文件的长度。(汉字占2个长度,换行占2个长度,用字节存储)
        String getName( );
           //获得文件(目录)名
      String getAbsolutePath() 
           //获得绝对路径
        String getParent( );
           //获得上级目录名
        boolean isFile( );     
           //是否是一个文件
        boolean isDirectory( );
           //是否是一个目录
        long lastModified( );
           //文件最后修改日期
        boolean createNewFile();
           //创建文件
        String[] list( );
           //求出目录里所有的文件或目录名
        File[] listFiles();
           //求目录里所有的文件对象

        I/O流(input/output)
        读写数据步骤:
        1、建立连接管道
        2、读/写数据
        3、关闭流
        
        
        java把一组有序的数据序列称为流(Stream)。根据操作的类型,可以把流分为输入流和输出流。
        input:  文件————>.java文件
        output: .java————>文件
        
        I/O类库位于java.io包中,它对各种输入流和输出流进行了抽象。
        按照最小的数据单元,可以把流分为:
        字节流:字符串、声音文件、音乐文件、二进制文件
        抽象父类是 InputStream 和 OutputStream
        字符流:汉字
        抽象父类是 Reader 和 Writer
        
        InputStream:
        int read():
            从输入流中读取一个字节,把它转换为0-255之间的整数,并返回这一整数,如果没有内容了,再读取,则返回-1,以此判断是否读取完成
        int read(byte[] b):
            从输入流中读取若干个字节,把它们保存到参数b指定的字节数组中,返回的整数表示读取的字节数,如果遇到输入流的结尾,返回-1
        int read(byte[] b, int off, int len)
            从输入流中读取若干个字节,把它们保存到参数b指定的字节数组中。参数off指定在字节数组中开始保存数据的起始下标,参数len指定读取的字节数目。返回的整数表示实际读取的字节数。如果遇到输入流的结尾,返回-1
        void close() :
            关闭输入流
        int available() :
            返回可以从输入流中读取的字节数目
        skip(long n):
            从输入流中跳过参数n指定数目的字节
        boolean markSupported(), void mark(int readLimit), void reset():    
            用于重复读入数据

        OutputStream:
        void write(int b):
            向输出流写出一个字节
        void write(byte[] b):
            把参数b指定的字节数组中的所有字节写到输出流
        void write(byte[] b,int off, int len):
            把参数b指定的字节数组中的若干字节写到输出流,参数off为起始下标,参数len为长度
        void close():
            关闭输出流
        void flush():
            
        OutputStream类本身的flush方法不执行任何操作,它的一些带缓冲区的子类覆盖了flush方法,该方法强制把缓冲区内的数据写到输出流中
        BufferedInputStream类覆盖了被装饰的输入流的读数据行为,利用缓冲区来提高读数据。
        
        BufferedOutputStream则是带缓冲区的输出流
        构造方法:
        BufferedInputStream(InputStream in) :
            通过原始输入流构造一个带缓冲区的输入流
        BufferedInputStream(InputStream in, int size) :
            通过一个原始输入流构造一个带缓冲区的输入流,参数size指定缓冲区大小,以字节为单位
            
        InputStreamReader可以把InputStream类型转换为Reader类型
        构造方法:
        InputStreamReader(InputStream in)
            创建一个使用默认字符集的 InputStreamReader。
        InputStreamReader(InputStream in, String charSet)
            创建使用指定字符集的 InputStreamReader。

        BufferedReader
            带有缓冲区的字符输入流
        System.in:
            为InputStream类型,代表标准输入流,默认的数据源为键盘
        System.out:
            为PrintStream类型,代表标准输出流,默认的数据汇是控制台
        System.err:
            为PrintStream类型,代表标准错误输出也流,默认的数据汇是控制台
            
        对象序列化
        1、对象的序列化是指把对象写到一个输出流中,对象的反序列化是指从一个输入流中读取一个对象
        2、java语言要求只有实现了java.io.Serializable接口的类的对象才能被序列化和反序列化,如果某些属性不想被序列化,则这些属性使用transient修饰符
        3、实现序列化用ObjectOutputStream类
        4、反序列化用ObjectInputStream类

猜你喜欢

转载自www.cnblogs.com/lxiaoxuan/p/11106955.html
今日推荐