黑马程序员_IO流

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

  1. IO流是实现设备之间的数据传输

    文件上传和下载
     A.  IO是什么,Input  Ouput  流  数据从一个设备,流向另一个设备
     B.  文件上传和下载
    下载 ,笔记本下载一个游戏 4399  官网 服务器 --硬盘 Game.exe
    笔记本,下载Game.exe
    
  2. IO分类

    A.  安照操作的文件类型分类
      第一类   字节流,一次操作1个字节,8个二进制位,可以操作任意文件
      第二类   字符流,一次操作2个字节, 16个二进制位,默认查询本机编码表GBK
      只能操作文本文件,不能操作文本以外的文件
      文本文件,是比较特殊的文件,JDK1.1开始 开发专门对付文本的字符流
    
    B. 按照流向分类  输出Input  输出Output
       第一类 输入流,从一个设备中读取数据,到java程序
       第二类 输出流,从JAVA程序中,将数据写到一个设备中
    
  3. IO四个抽象 基类

     A. 字节输出流,写入任意文件   
        OutputStream 方法就是用来写数据
        write 字节数组  字节数组一部分  单个字节
        close 关闭资源   IO写文件利用操作系统中的功能
        flush 刷新,数据强制的从内存,刷新到一个设备,字节流一般不用
    
     B. 字节输入流,读取任意文件
        InputStream 方法用来读取数据
        read 字节数组  字节数组一部分 单个字节
        close 关闭资源
    
     C. 字符输出流,写文本文件
        Writer 方法就是用来写数据
        write 字符输出  字符数组一部分  单个字符   写字符串
        flush 字符流输出流,写完数据后,必须要刷新,否则数据留在内存中
        close 关闭资源
    
     D. 字符输入流 ,读取文本文件
        Reader 方法用来读取数据
        read 字符数组  字符数组一部分  单个字符
        close 关闭资源
    

—–字符流 —–

CharArrayWriter:把内存中的字符数组写入输出流,输出流的缓冲区会自动增加大小。输出流的数据可以通过一些方法重新获取。

StringWriter: 一个字符流,可以用其回收在字符串缓冲区中的输出来构造字符串。

FileWriter:把数据写入文件。

BufferedWriter:提供缓冲功能。

OutputStreamWriter:字符流通向字节流的桥梁:可使用指定的 charset将要写入流中的字符编码成字节。

PrintWriter: 向文本输出流打印对象的格式化表示形式。

CharArrayReader: 从内存中的字符数组中读入数据,以对数据进行流式读取。

StringReader:从内存中的字符串读入数据,以对数据进行流式读取。

FileReader:从文件中读入数据。注意这里读入数据时会根据JVM的默认编码对数据进行内转换,而不能指定使用的编码。所以当文件使用的编码不是JVM默认编码时,不要使用这种方式。要正确地转码,使用InputStreamReader。

BufferedReader:提供缓冲功能,可以读取行:readLine();

LineNumberReader: 提供读取行的控制:getLineNumber()等方法。

InputStreamReader: 字节流通向字符流的桥梁:它使用指定的 charset读取字节并将其解码为字符。

—–字节流—–

FileOutputStream和ByteArrayOutputStream,前者实现了把数据流写入文件的功能,后者实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()和 toString() 获取数据。

BufferedOutputStream: 提供了缓冲功能的输出流,在写出完成之前要调用flush来保证数据的输出。

DataOutputStream: 数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。

PipedOutputStream: 允许以管道的方式来处理流。可以将管道输出流连接到管道输入流来创建通信管道。管道输出流是管道的发送端。通常,数据由某个线程写入 PipedOutputStream 对象,并由其他线程从连接的 PipedInputStream 读取。

PrintStream: 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。我们经常用到的System.out或者System.err都是PrintStream。

FileInputStream和ByteArrayInputStream,他们分别实现了从文件或者内存中的字节数组读入数据到输入流。 BufferedInputStream: 提供了缓冲功能。

DataInputStream: 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。

PipedInputStream: 允许以管道的方式来处理流。当连接到一个PipedOutputStream后,它会读取后者输出到管道的数据。

PushbackInputStream: 允许放回已经读取的数据。

SequenceInputStream: 能对多个inputstream进行顺序处理。

—–缓冲区—–

好处: 提高了对数据的读写效率

缓冲区的出现是为了提高流的操作效率而出现的。

所以在创建缓冲区之前,必须要先有流对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值