zoukankan      html  css  js  c++  java
  • 字节输入流:io包中的InputStream为所有字节输入流的父类。

    字节输入流:io包中的InputStream为所有字节输入流的父类。

    Int read();读入一个字节(每次一个);

    可先使用new  byte[]=数组,调用read(byte[] b)

    read (byte[])返回值可以表示有效数;read (byte[])返回值为-1表示结束。

     

    字节输出流:io包中的OutputStream位所有字节输入流的父类。

    Write和输入流中的read相对应。

     

    在流中close()方法由程序员控制。因为输入输出流已经超越了VM的边界,所以有时可能无法回收资源。

    原则:凡是跨出虚拟机边界的资源都要求程序员自己关闭,不要指望垃圾回收。

    以Stream结尾的类都是字节流。

    如果构造FileOutputStream的同时磁盘会建立一个文件。如果创建的文件与磁盘上已有的文件名重名,就会发生覆盖。

    用FileOutputStream中的boolean,则视,添加情况,将数据覆盖重名文件还是将输入内容放在文件的后面。(编写程序验证)

     

    DataOutputStream:输入数据的类型。

    因为每中数据类型的不同,所以可能会输出错误。

    所有对于:DataOutputStream

              DataInputStream

              两者的输入顺序必须一致。

    过滤流:

     bufferedOutputStream

     bufferedInputStream

    用于给节点流增加一个缓冲的功能。
    在VM的内部建立一个缓冲区,数据先写入缓冲区,等到缓冲区的数据满了之后再一次性写出,效率很高。

    使用带缓冲区的输入输出流的速度会大幅提高,缓冲区越大,效率越高。(这是典型的牺牲空间换时间)

    切记:使用带缓冲区的流,如果数据数据输入完毕,使用flush方法将缓冲区中的内容一次性写入到外部数据源。用close()也可以达到相同的效果,因为每次close都会使用flush。一定要注意关闭外部的过滤流。

     

    (非重点)管道流:也是一种节点流,用于给两个线程交换数据。

    PipedOutputStream

    PipedInputStream

    输出流:connect(输入流)

     

    RondomAccessFile类允许随机访问文件

    GetFilepoint()可以知道文件中的指针位置,使用seek()定位。

    Mode(“r”:随机读;”w”:随机写;”rw”:随机读写)

    练习:写一个类AJAVA A file1 file2

    file1要求是系统中已经存在的文件。File2是还没有存在的文件。

    执行完这个命令,那么file2就是file1中的内容。

     

    字符流:readerwrite只能输纯文本文件。

    FileReader类:字符文件的输出

     

    字节流与字符流的区别:

    字节流的字符编码:

    字符编码把字符转换成数字存储到计算机中,按ASCii将字母映射为整数。

    把数字从计算机转换成相应的字符的过程称为解码。

    编码方式的分类:

    ASCII(数字、英文):1个字符占一个字节(所有的编码集都兼容ASCII

    ISO8859-1(欧洲):1个字符占一个字节

    GB-2312/GBK1个字符占两个字节

    Unicode: 1个字符占两个字节(网络传输速度慢)

    UTF-8:变长字节,对于英文一个字节,对于汉字两个或三个字节。

     

    原则:保证编解码方式的统一,才能不至于出现错误。

    Io包的InputStreamread称为从字节流到字符流的桥转换类。这个类可以设定字符转换方式。

    OutputStreamred:字符到字节

    Bufferreadreadline()使得字符输入更加方便。

    I/O流中,所有输入方法都是阻塞方法。

    Bufferwrite给输出字符加缓冲,因为它的方法很少,所以使用父类printwrite,它可以使用字节流对象,而且方法很多。

     

    练习:做一个记事本

    swing/JfileChoose: getSelect file()

    InputStreeamReader:把字节变为字符

    JAVA中对字符串长无限制  bufferedReaderir

  • 相关阅读:
    服务器状态码
    QuerySet中添加Extra进行SQL查询
    django配置一个网站建设
    MySQL数据库查询中的特殊命令
    125. Valid Palindrome
    121. Best Time to Buy and Sell Stock
    117. Populating Next Right Pointers in Each Node II
    98. Validate Binary Search Tree
    91. Decode Ways
    90. Subsets II
  • 原文地址:https://www.cnblogs.com/borter/p/10744124.html
Copyright © 2011-2022 走看看