A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Merle007 初级黑马   /  2018-12-20 08:39  /  642 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

IO流:
        Java中I/O操作主要是指使用 java.io 包下的内容,进行输入、输出操
        作。输入也叫做读取数据,输出也叫做作写出数据。

IO的分类:
        【分流向】
        输入流 :把数据从 其他设备 上读取到 内存 中的流。
        输出流 :把数据从 内存 中写出到 其他设备 上的流。
        【分类型】
        字节流 :以字节为单位,读写数据的流。
        字符流 :以字符为单位,读写数据的流。

字节输出流【OutputStream】
        表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。
       
基本方法:
        public void close() :
                关闭此输出流并释放与此流相关联的任何系统资源。
        public void flush() :
                刷新此输出流并强制任何缓冲的输出字节被写出。
        public void write(byte[] b) :
                将 b.length字节从指定的字节数组写入此输出流。
        public void write(byte[] b, int off, int len) :
                从指定的字节数组写入 len字节,从偏移量 【off开始】输出到此
                输出流。
        public abstract void write(int b) :
                将指定的字节输出流。

FileOutputStream类:
        文件输出流,用于将数据写出到文件。
构造方法:
        public FileOutputStream(File file) :
                创建文件输出流以写入由指定的 File对象表示的文件。
        public FileOutputStream(String name) :
                创建文件输出流以指定的名称写入文件。

当创建一个流对象时,必须传入一个文件路径。该路径下,如果没有这个文
件,会创建该文件。如果有这个文件,会清空这个文件的数据。

写出字节数据:
        1.写出字节 write(int b):每次可以写出一个字节数据
        2.写出字节数组 write(byte[] b) :每次可以写出数组中的数据
        3.写出指定长度字节数组 write(byte[] b, int off, int len):
          每次写出从off索引开始,len个字节

数据追加续写:
        保留目标文件中数据,继续添加新数据
        public FileOutputStream(File file, boolean append) :
                创建文件输出流以写入由指定的 File对象表示的文件。
        public FileOutputStream(String name, boolean append) :
                创建文件输出流以指定的名称写入文件。

写出换行:
        Windows系统里,换行符号是 \r\n

字节输入流【InputStream】:
        是表示字节输入流的所有类的超类,可以读取字节信息到内存中。
        它定义了字节输入流的基本共性功能方法。
基本方法:
        public void close() :
                关闭此输入流并释放与此流相关联的任何系统资源。
        public abstract int read() :
                从输入流读取数据的下一个字节。
        public int read(byte[] b) :
                从输入流中读取一些字节数,并将它们存储到字节数组 b中 。

close方法,当完成流的操作时,必须调用此方法,释放系统资源。

构造方法:
        FileInputStream(File file) :
                通过打开与实际文件的连接来创建一个 FileInputStream ,该文
                件由文件系统中的 File对象 file命名。
        FileInputStream(String name) :
                通过打开与实际文件的连接来创建一个 FileInputStream ,该文
                件由文件系统中的路径名 name命名。

读取字节数据:
        1. 读取字节:read 方法,每次可以读取一个字节的数据,提升为int
           类型,读取到文件末尾,返回 -1 ,

        2. 使用字节数组读取: read(byte[] b) ,每次读取b的长度个字节到
           数组中,返回读取到的有效字节个数,读取到末尾时,返回 -1 ,

字符流:
        字符为单位读写数据,专门用于处理文本文件。

字符输入流【Reader】:
        表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。
       
方法:
        public void close() :
                关闭此流并释放与此流相关联的任何系统资源。
        public int read() :
                从输入流读取一个字符。
        public int read(char[] cbuf) :
                从输入流中读取一些字符,并将它们存储到字符数组 cbuf中

FileReader类:
        把硬盘文件中的数据以字符的方式读取到内存中
       
1. 字符编码:字节与字符的对应规则。Windows系统的中文编码默认是GBK
   编码表。idea中UTF-8
2. 字节缓冲区:一个字节数组,用来临时存储字节数据。

构造方法:
        FileReader(File file) :
                创建一个新的 FileReader ,给定要读取的File对象。
        FileReader(String fileName) :
                创建一个新的 FileReader ,给定要读取的文件的名称。

创建一个流对象时,必须传入一个文件路径。类似于FileInputStream 。

读取字符数据:
        1.读取字符: read 方法,每次可以读取一个字符的数据,提升为int
                     类型,读取到文件末尾,返回 -1
        2. 使用字符数组读取: read(char[] cbuf) ,每次读取b的长度个字
                                                  符到数组中,返回读取到的有效字符个数,读
                                                  取到末尾时,返回 -1

字符输出流【Writer】:
        表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。

基本方法:
        void write(int c)
                写入单个字符。
        void write(char[] cbuf)
                写入字符数组。
        abstract void write(char[] cbuf, int off, int len)
                写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
        void write(String str)
                写入字符串。
        void write(String str, int off, int len)
                写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
        void flush()
                刷新该流的缓冲。
        void close()
                关闭此流,但要先刷新它。
FileWriter类:
        写出字符到文件的便利类。
构造方法:
        FileWriter(File file) :
                创建一个新的 FileWriter,给定要读取的File对象。
        FileWriter(String fileName) :
                创建一个新的 FileWriter,给定要读取的文件的名称。

基本写出数据:
        写出字符: write(int b) 方法,每次可以写出一个字符数据

关闭和刷新:
        因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。
        但是关闭的流对象,是无法继续写出数据的。
        因此,需要既写出,又写入数据时,需要使用flush()方法

        flush :
                刷新缓冲区,流对象可以继续使用。
        close :
                先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
       
1. 写出字符数组 :
        write(char[] cbuf) 和 write(char[] cbuf, int off, int len) ,
        每次可以写出字符数组中的数据       
       
2. 写出字符串:
        write(String str) 和 write(String str, int off, int len) ,
        每次可以写出字符串中的数据,更为方便       
       
3. 续写和换行:
        将指定的字节信息写出到目的地。
       
        【字符流,只能操作文本文件,不能操作图片,视频等非文本文件。】
       
属性集:
        java.util.Properties:表示一个持久的属性集。使用键值结构存储数
        据,每个键及其对应值都是一个字符串。【键和值默认为字符串类型】
       
Properties类:
构造方法:
        public Properties() :
                创建一个空的属性列表。
基本的存储方法:
        public Object setProperty(String key, String value) :
                保存一对属性。
        public String getProperty(String key) :
                使用此属性列表中指定的键搜索属性值。
        public Set<String> stringPropertyNames() :
                所有键的名称的集合。
与【流】相关的方法:
        public void load(InputStream inStream) :
                从字节输入流中读取键值对。
               
        注意:
        1.文本中的数据,必须是键值对形式,可以使用空格、等号、冒号等符
        号分隔。
        2.可以使用 # 进行注释,被注释的键值对不能被读取
        3.存储的键值对默认为字符串类型,不会加引号
       
        使用方法:
        1.创建Properties集合对象;
        2.使用Properties集合对象中的方法load读取保存键值对的文件
        3.遍历Properties集合

       

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马