美文网首页
NIO(1)---- FileChannel

NIO(1)---- FileChannel

作者: Bre_eze | 来源:发表于2018-07-07 18:21 被阅读0次

先在1024个字节的缓冲区内存储读取的数据,当超过这个size时统一输出。

//使用NOI输出
    public static void fileNIOChannel() throws IOException {
        //创建一个File实例
        File file = new File("D:\\test.out");
        //FileInputStream为文件输入流
        FileInputStream in = new FileInputStream(file);
        //缓冲器向通道输入数据
        FileChannel fileChannel = in.getChannel();
        //创建一个容量为1024字节的ByteBuffer
        ByteBuffer buf = ByteBuffer.allocate(1024);
        //写入数据到Buffer
        int bytesRead = fileChannel.read(buf);
        while(bytesRead != -1)
        {
            //回绕缓冲区(输出通道会从数据的开头而不是末尾开始)
            buf.flip();
            while(buf.hasRemaining())
            {
                System.out.print((char)buf.get());
            }
            /**
             * 压缩此缓冲区,compact方法会执行两个动作
             * 1.清除之前写好的字符
             * 2.通过标记位置为0
             * 这就为什么要结合filp()使用
             */
            buf.compact();
            //写入数据到Buffer
            bytesRead = fileChannel.read(buf);
        }
    }

相关文章

网友评论

      本文标题:NIO(1)---- FileChannel

      本文链接:https://www.haomeiwen.com/subject/kqeguftx.html