你对IO/流还懵逼么


自写小总结

IO/操作



流--->流是一组有顺序的,有起点和终点的字节集合,
      是对数据传输的总称或抽象。即数据在两设备
      间的传输称为流,流的本质是数据传输,根据
      数据传输特性将流抽象为各种类,方便更直观
      的进行数据操作。
      
   特点:只能顺序读写数据
         不能任意跳转位置读写
         
分类:----字节流,字符流--I/0
字节存储的是内容,字符存储的是字符










字符流的由来:因为数据编码的不同,而有了对字
      符进行高效操作的流对象。本质其实就是基
      于“字节流”读取时,去查了指定的码表。
      (根据字节编码查字符(指定编码))
字节流:单位是byte(8bit)---一次可读多个字节
        ---图片,视屏,音频,文件--
        直接操作文件(无需缓冲)
字符流:单位是字符----------------------------
        处理字符类的数据-------------
        什么是字符?   'a' "abc" "123"   


输入流只能读(读到CPU)
输出流只能写(写到文件)






----------------------------------------------------
        |   字节流         |     字符流            |
----------------------------------------------------
输入流  |   InputStream    |     Reader            |
----------------------------------------------------   
输出流  |   OutputStream   |     Writer            |
----------------------------------------------------
都是抽象类,具体实现:
字节流 FileInputStream FileOutputStream
字符流 FileReader FileWriter 






 InputStream / OutputStream  字节流抽象父类
    FileInputStream / FileOutputStream(File)
      传入一个文件(或文件路径)


高级流:都要接入流才能使用:
(那为什么要?高级,优化,快捷)


  BufferedInputStream / BufferedOutputStream()    
------->缓冲流,提高单字节读写效率
  DataInputStream / DataOutputStream            
------->固定字节格式,writeInt() writeDouble() writeUTF()
       处理速度超级快
       
思考:字符串转流?流转字符串
(提示:字符串.getBytes()获得字符串字节(ByteArrayInputStream))
      字节流转换成字符流可以用 InputSteamReader OutputStreamWriter 
      转换成BufferdReader BufferedWriter 他们具有缓冲区
----------------------------------------------------------------
PrintStream  任何类型转成字符串 print() println()
----------------------------------------------------------------






Reader / Writer                               
   字符流抽象父类
InputStreamReader / OutputStreamWriter(流)?为什么要流  
   编码转换流---接入流 InputStream的子类(类似于接口)   
FileReader / FileWriter(File)                       
     "转换流"接"文件字节流"
BufferedReader / BufferedWriter       
      字符缓冲,readLine()
PrintWriter与 PrintStream 相同
后面接字符流或者字节流------PrintStream(低级别只接字节流)


ObjectOutputStream out = 
      new ObjectOutputStream(相接的流);


可任意操作对象
      
RandomAccessFile随机读写文件(使用字节)
可任意操作文件
将文件中的字节数据,看做是数组,用下标读写指定位置的字节值




InputStream
    int read()throws IOException  
       从输入流中读取数据的下一个字节
    int read(byte b[])throws IOException  
       从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
    int read(byte b[], int off, int len)throws 
IOException  
       将输入流中最多 len 个数据字节读入 byte 数组。
       将读取的第一个字节存储在元素 b[off] 中,下一个存储在 b[off+1] 中
    long skip(long n)throws IOException         跳过和丢弃此输入流中数据的 n 个字节
    void close() throws IOException
OutputStream
    void write(int b)throws IOException  
      将指定的字节写入此输出流。write 的常规协定是:向输出流写入一个字节。 
      要写入的字节是参数 b 的八个低位。b的 24 个高位将被忽略。
     void write(byte b[])  throws IOException  
   将 b.length 个字节从指定的 byte 数组写入此输出流
     void write(byte b[], int off, int len) throws IOException 
   将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流
   void flush()throws IOException  
刷新此输出流并强制写出所有缓冲的输出字节   void close()throws IOException  


Reader
int read() throws IOException   读取单个字符
int read(char cbuf[])                throws IOException   将字符读入数组
int read(char[] cbuf,int off,int len)throws IOException   将字符读入数组的某一部分
long skip(long n)                    throws IOException
void close()
Writer
void write(int c)                    throws IOException   写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。
void write(char[] cbuf)              throws IOException   写入字符数组。 
vvoid write(char cbuf[], int off, int len) throws IOException写入字符数组的某一部分。
void write(String str)               throws IOException    str - 要写入的字符串 
Writer append(CharSequence csq)      throws IOException    将指定字符序列添加到此 writer。
void close()                         throws IOException   
void flush()                         throws IOException
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值