资讯专栏INFORMATION COLUMN

JavaIO

Fundebug / 1355人阅读

摘要:是字节流通向字符流的桥梁它使用指定的读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。为了达到最高效率,可要考虑在内包装。

JAVA缓冲区就是先读一些数据在内存中间或者先写一部分数据在内存中。比如写,不是每次写数据到磁盘, 而是先把数据写到内存中,等到内存的缓冲区满了再一次写入磁盘,减少磁盘访问。JAVA读取大文需要使用radomAccessFileNIOInputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。 每次调用InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。 为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:
BufferedReader in = new BufferedReader(new InputStreamReader);

    import java.io.*;
    import java.io.DataInputStream;
    public  class   Main{
        public static void main(String[] args) throws  Exception {
    
          BufferedReader   reader= new BufferedReader(new InputStreamReader(new FileInputStream(new File("text.txt"))));
    String line=null;
     while((line=reader.readLine())!=null){
         String[]  s=line.split("s+");
         for ( String single:s ) {
               System.out.println(single);
         }
        
     }
        }
    }                                                                                 
    (System.in));

s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格。InputStreamReader 中的一个 read()是每次都会从磁盘里面读取一个字节。

关于flush方法:

每一个IO流都有自己的缓冲区。
flush本意是冲刷,这个方法大概取自它引申义冲马桶的意思,马桶有个池子,你往里面扔东西,会暂时保存在池子里,只有你放水冲下去,东西才会进入下水道。
同理很多流都有一个这样的池子,专业术语叫缓冲区,当你print或者write的时候,会暂时保存在缓冲区,并没有发送出去,这是出于效率考虑的,因为数据不会自己发送过去,必须有其他机制,而且这个很消耗资源,就像马桶你需要很多水,才能冲走,你如果扔一点东西,就冲一次水,那你水费要爆表了,同样如果你写一行文字,或者一个字节,就要马上发送出去,那网络流量,CPU使用率等等都要爆表了,所以一般只有在你真正需要发送否则无法继续的时候,调用flush,将数据发送出去。

flush的作用就是强制清空缓存,
写入IO,比如如果写操作之后程序不是对应着输出流的关闭,而是进行其他阻塞式的操作(比如从输入流里面读数据),
这个时候缓存数据就直接丢失。这个时候记住要flush一下,
只有这样服务端才能收到客户端发送的数据,否则可能会引起两边无限的互相等待

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65491.html

相关文章

  • JavaIOJavaIO输入输出流

    摘要:下面我们使用字节输入输出流来说明这个问题输入流一般是由对象如建立的,当新建一个时,对象建立了一个包含有数据的管道其实就是我们所说的这个流并将对象存储的数据输入到管道中,因此管道里的数据流就是对象内的数据。 流的原理: showImg(/img/bVqa89); 一连串有顺序的数据系列可以看成是一个流。 输入输出流: 数据从IO输入到程序的流是输入流,数据从程序输出到IO的流是输出流。 ...

    CloudwiseAPM 评论0 收藏0
  • Java知识点总结(JavaIO- Scanner类 )

    摘要:知识点总结类知识点总结后提供的输入数据类,此类位于包中,不仅可以完成输入数据的操作,还可以方便地对输入数据进行验证。 Java知识点总结(JavaIO- Scanner类 ) @(Java知识点总结)[Java, JavaIO] showImg(https://segmentfault.com/img/bV9dAj?w=838&h=396); JDK 1.5后提供的输入数据类,此类位于...

    CarlBenjamin 评论0 收藏0
  • Java知识点总结(JavaIO-合并流类)

    摘要:知识点总结合并流类知识点总结合并流的主要功能是将两文件的内容合并成一个文件字节在多文件的应用场景下非常高效,因为是将多个流串联起来,形成一个流,便于操作 Java知识点总结(JavaIO- 合并流类 ) @(Java知识点总结)[Java, JavaIO] [toc] showImg(https://segmentfault.com/img/bV9a9X?w=853&h=164); 合...

    iliyaku 评论0 收藏0
  • Java知识点总结(JavaIO- BufferedReader类 )

    摘要:知识点总结类知识点总结类用于从缓冲区中读取内容,所有的输入字节数据都将放在缓冲区中中定义的构造方法只能接收字符输入流的实例,所以必须使用字符输入流和字节输入流的转换类将字节输入流转变为字符流。 Java知识点总结(JavaIO- BufferedReader类) @(Java知识点总结)[Java, JavaIO] [toc] showImg(https://segmentfault....

    alanoddsoff 评论0 收藏0
  • Java知识点总结(JavaIO-File类)

    摘要:知识点总结类知识点总结类类可以进行创建和删除文件等操作。使用一个类,则必须向类的构造方法中传递一个文件路径。 Java知识点总结(JavaIO-File类) @(Java知识点总结)[Java, JavaIO] [toc] File类 File类可以进行创建和删除文件等操作。使用一个File类,则必须向File类的构造方法中传递一个文件路径。 showImg(https://segme...

    KavenFan 评论0 收藏0
  • Java知识点总结(JavaIO-转换流)

    摘要:知识点总结转换流知识点总结是的子类,将一个字符流的输出对象变为字节流的输出对象。将字节输出流转为字符输出流字节流转为字符流苹果将字节输入流转为字符输入流内容是 Java知识点总结(JavaIO-转换流) @(Java知识点总结)[Java, JavaIO] [toc] showImg(https://segmentfault.com/img/bV82dQ?w=849&h=226); O...

    luckyyulin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<