美文网首页
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