「niojava分行」niojava面试题

博主:adminadmin 2022-12-06 11:39:05 106

今天给各位分享niojava分行的知识,其中也会对niojava面试题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

利用java.nio的FileChannel能够实现按行读取文件吗?(解决了)

利用java.nio的FileChannel能够实现按行读取文件:

具体思路是:设置两个缓冲区,一大一小,大的缓冲区为每次读取的量,小的缓冲区存放每行的数据(确保大小可存放文本中最长的那行)。读取的时候判断是不是换行符13,是的话则返回一行数据,不是的话继续读取,直到读完文件。

实现方法:

        FileChannel fc=raf.getChannel();

       //一次读取文件,读取的字节缓存数

       ByteBuffer fbb=ByteBuffer.allocate(1024*5);

        fc.read(fbb);

        fbb.flip();

     //每行缓存的字节   根据你的实际需求     

      ByteBuffer bb=ByteBuffer.allocate(500);

   

              //判断是否读完文件

public boolean hasNext() throws IOException {

        if(EOF)return false;

        if(fbb.position()==fbb.limit()){//判断当前位置是否到了缓冲区的限制

            if(readByte()==0)  return false;

        }

        while(true){

            if(fbb.position()==fbb.limit()){

                if(readByte()==0)  break;

            }

            byte a=fbb.get();

            if(a==13){

                if(fbb.position()==fbb.limit()){

                    if(readByte()==0)  break;

                }

                return true;

            }else{

                if (bb.position()  bb.limit()) {

                    bb.put(a);

                }else {

                    if(readByte()==0)  break;

                }

            }

        }

        return true;

    }

java nio 是什么?

nio是java New IO的简称,在jdk1.4里提供的新api。Sun官方标榜的特性如下:

– 为所有的原始类型提供(Buffer)缓存支持。

– 字符集编码解码解决方案。

– Channel:一个新的原始I/O抽象。

– 支持锁和内存映射文件的文件访问接口。

– 提供多路(non-bloking)非阻塞式的高伸缩性网络I/O。

JAVA怎么快速读取一个大文件(1G多有500万行)

java NIO除了异步非阻塞特性外,另外一个重要特性就是文件读取,原理是文件地址直接映射在线程内存,不要经过操作系统,可以大大提高响应速度。

下面是例子:

关于niojava分行和niojava面试题的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-06,除非注明,否则均为首码项目网原创文章,转载请注明出处。