Question: Implement a class named BitOutputStream for writing a stream of bits to a file as follows: +BitOutputStream(file: File) // Creates a BitOutputStream to write bits

Implement a class named BitOutputStream for writing a stream of bits to a file as follows:

+BitOutputStream(file: File) // Creates a BitOutputStream to write bits to the file.

+writeBit(char bit): void // Writes a bit '0' or '1' to the output stream

+writeBit(String bitString): void // Writes a string of bits to the output stream

+close(): void // This method must be invoked to close the stream

The writeBit(char bit) method stores the bit in a byte variable. When you create a BitOutputStream, the byte is empty. After invoking writeBit('1') the byte becomes becomes 00000001. After invoking writeBit("0101"), the byte becomes 00010101. The first three bits are not filled yet. When a byte is full, it is sent to the output stream. Now the byte is reset to empty. You must close the stream by invoking the close() method. If a byte is neither empty nor full, the close() method first fills in zeros to make a full 8 bits in the byte, and then closes the stream. Write a program that sends the bits 010000100100001001101 to a file called testOutput.dat.

One possible approach to this program is the following outline:

public class Program2 { public static void main(String[] args) throws Exception { BitOutputStream output = new BitOutputStream(new File("testOutput.dat")); output.writeBit("010000100100001001101"); output.close(); System.out.println("Done"); }

public static class BitOutputStream { private FileOutputStream output; // programs statements

// Constructor public BitOutputStream(File file) throws IOException { // one statement will do the job }

public void writeBit(String bitString) throws IOException { for (int i = 0; i < bitString.length(); i++) writeBit(bitString.charAt(i)); }

public void writeBit(char bit) throws IOException { // Program statements for this method

}

/** Write the last byte and close the stream. If the last byte is not full, right-shfit with zeros */ public void close( ) throws IOException { // Program statements for this method

output.close(); // This makes use of the close() method for a FileOutputStream object } } }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!