IO流的基本理解

1. IO分类:

输入流                                                    输出流
字节流    InputStream(抽象类)         OutputStream(抽象类

字符流    Reader (抽象类)                Writer(抽象类)         
            
2.字节流:
     使用场景:
     1.字节流处理除了文本、文字相关所有的流问题        

     2.字符流只处理文本、文字相关
 
         1.输入流    abstract class InputStream:这个抽象类是表示输入字节流的所有类的超类。
                           FileInputStream 子类:文件字节输入流
                                 1. 构造方法
                                         FileInputStream(String name)     name:表示(绝对路径、相对路径)文件名
                                         FileInputStream(File file)
 
                                 2. 普通方法:
                                    1. int read(byte[] b) 从输入流读取一些字节数,并将它们存储到缓冲区 b 。
                                    2. int read() 从输入流读取数据的下一个字节。  
                                    3. int read(byte[] b, int off, int len)     从输入流读取最多 len字节的数据到一个字节数组。    
                                    
        2.输出流    abstract class OutputStream:这个抽象类是表示输出字节流的所有类的超类。
                          FileOutputStream 子类:文件字节输出流
                                 1. 构造方法
                                        FileOutputStream(String name)         name:表示(绝对路径、相对路径)文件名
                                        FileOutputStream(String name, boolean append)
                                        append:表示是否在该文件末尾追加数据,如果为true,表示追加,false,表示从头开始覆盖
                                        FileOutputStream(File file)
                                        FileOutputStream(File file, boolean append)
                                
                                 2. 普通方法:
                                    1. void write(byte[] b, int off, int len)     将 len字节从位于偏移量 off的指定字节数组写入此文件输出流。  最常用
                                    2. void write(byte[] b)将 b.length个字节从指定的字节数组写入此文件输出流。  
                                    3. void write(int b) 将指定的字节写入此文件输出流。  
        3. 注意事项:
                1. 必须要关闭IO流,节约资源开销
                2. 关闭IO流原则,先开后关

3.     字符流:
     使用场景:使用于处理文本相关的数据。
         Reader 抽象类:
                 子类
             InputStreamReader
                子类
         FileReader:适用于读取字符相关的文件
                 1. 构造方法:
                        1.FileReader(File file)
                        2.FileReader(String fileName)    fileName:文件名(相对路径/绝对路径)
 
                 2. 读取方法:
                         3. int read(char[] c)读取字符到char数组中
                         2. int read()读取一个字符
                         3. int read(char[] c,int start,int length)读取制定长度的字符到char数组中
         Writer 抽象类:
                 子类
             OutputStreamWriter(转换流)
                 子类
             FileWriter:适用于写出字符相关的文件
                 1. 构造方法:
                        1.FileWriter(File file)     默认是false
                        2.FileWriter(File file, boolean append)  
                            append:表示是在文件末尾追加还是从头覆盖,如果true追加,false覆盖,默认是false
                        3.FileWriter(String fileName)     默认是false
                        4.FileWriter(String fileName, boolean append)  
                            fileName:文件名(相对路径/绝对路径)

4. 转换流:目前唯一一个可以设置字符集的流
         使用场景:
             别人给提供了字节流,而需要处理文本数据,这时候,就需要用转换流转换一下,更方便处理文本数据
         作用:就是一字符流的方式读取或写出文本相关的数据
         InputStreamReader:将字节输入流包装一下,让其更适合读取文本文件
             构造方法:
             1.InputStreamReader(InputStream in) 创建一个使用默认字符集的InputStreamReader。
             2.InputStreamReader(InputStream in, String charsetName)
                        创建一个使用指定字符集的InputStreamReader。  
             普通方法:
                 public int read(char[] cbuf)
                 int read(char[] cbuf, int offset, int length)  

         OutputStreamWriter:将字节输出流包装一下,让其更适合写出文本文件
             构造方法:
             1. OutputStreamWriter(OutputStream out) 创建一个使用默认字符编码的OutputStreamWriter。
             2. OutputStreamWriter(OutputStream out, String charsetName)
                    创建一个使用指定字符集的OutputStreamWriter。  
            普通方法:
                void write(char[] cbuf, int off, int len)  
                append(CharSequence csq,int start,int end)
            
5. 缓冲流:
         使用场景:以后一律都要使用,以提高效率        建议以后都是用字节或者字符数组的方式复制文件,这样效率最高
             BufferedInputStream
                 字节输入缓冲流构造方法:
                       1.BufferedInputStream(InputStream in) 创建一个默认缓冲区大小的缓冲流
                        2.BufferedInputStream(InputStream in, int size)创建一个指定缓冲区大小的缓冲流
                
             BufferedOutputStream
                 字节输出缓冲流构造方法:
                      1.BufferedOutputStream(OutputStream out)
                      2.BufferedOutputStream(OutputStream out, int size)


             BufferedReader
                  字符输入缓冲流构造方法:
                 1.BufferedReader(Reader in) 创建一个默认缓冲区大小的缓冲流
                 2.BufferedReader(Reader in, int size) 创建一个指定缓冲区大小的缓冲流
                
                 特殊的读取方法,其他读取方法跟字符流一样:
                     String readLine()读取一行字符串
 
             BufferedWriter
                字符输出缓冲流构造方法:
                1.BufferedWriter(Writer out)
                2.BufferedWriter(Writer out, int size)
            
                特殊的写出方法,其他写出方法跟字符流一样:
                     writer(String str)
                     newLine()写出一个换行符

 

6. 随机访问文件类RandomAccessFile:
    1. 概念:支持随机访问文件内容和随机读取文件内容
     2. 作用:
             1.断点续传
            2.判断空间是否充足,占用空间
            3.多线程上传下载
            
    3. 使用:
        1. 构造方法:
            1.RandomAccessFile(String name, String mode)  
                 创建随机访问文件流,以从中指定名称的文件读取,并可选择写入文件。
             
                mode - 访问模式:"r"只读 ,"rw"读写     "rws",或 "rwd"
                
            2.RandomAccessFile(File file, String mode)
                创建一个随机访问文件流从File参数指定的文件中读取,并可选地写入文件。  
                
        2. 常用方法:
            1. long getFilePointer() 返回此文件中的当前文件的指针位置,不管是读取或写出,指针都会移动位置
                配合seek方法,做断点续传功能
            2. void seek(long pos)
                设置文件指针位置,从该文件的开头测量,发生下一次读取或写入。  
                配合getFilePointer方法,做断点续传功能
                    
            3. long length() 返回此文件的大小。
            4. void setLength(long newLength)设置此文件的大小。
                通常用来设置临时文件的大小,以便占用空间
                
            5. int read(byte[] b) 从该文件读取最多 len个字节的数据到字节数组。                  
            6. void write(byte[] b, int off, int len)
                    从指定的字节数组写入 len个字节,从偏移量 off开始写入此文件。 
            7. String readLine() 从此文件中读取下一行文本。  
            8. void writeBytes(String s)
                    将字符串作为字节序列写入文件。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值