Java 按位读取写入文件

本文介绍如何在Java中实现按位读取和写入文件,特别是在Huffman树的压缩解压过程中。通过创建一个缓冲区并使用位运算来读取和写入文件中的单个位。详细步骤包括按位读取时的右移操作,以及按位写入时的左移和与运算策略。
摘要由CSDN通过智能技术生成

在实现Huffman树时,压缩和解压需要从文件中按位读取,即一次只读一个位或者写一个位。
《算法(第四版)》中提供了一种实现方法,StdIn类和StdOut类,豁然开朗。

按位读取

方法:
1. 开辟一个缓冲区int buffer,用于储存位,并记录缓冲区中bit数n
2. 缓冲区不为空时,进行位运算buffer>>(n-1),即为buffer中的最高位,实现读取一个位的操作

例:

buffer(二进制表示) 11001010
n 8

buffer向右移7个位buffer >> (8-1),即可得到最高位1

public static boolean readBoolean() {
    if (isEmpty()) throw new NoSuchElementException("Reading from empty input stream");
    n--;
    boolean bit = ((buffer >> n) & 1) == 1;
    if (n == 0) fillBuffer();
    return bit;
}

其他部分实现

public final 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值