import java.lang.Exception; import java.io.IOException; import java.io.PrintStream; class Comp{ private static void compress(String fileName) throws java.lang.Exception { IO.Compressor io = new IO.Compressor(fileName); Trie trie; TrieNode rootNode, currentNode, nextNode; char[] chars; chars = io.giveArray(); int i = 0; trie = new Trie(); rootNode = trie.head(); currentNode = rootNode; while(i < chars.length ) { //System.out.println("Big Loop " + chars[i]); while(true) { //currentNode.printNode("loop"); nextNode = trie.isChild(currentNode, chars[i] ); if(nextNode == null) break; // add chars[i] to currentNode as child else { //nextNode.printNode("Great Success! found " + chars[i]); currentNode = nextNode; if( i + 1 < chars.length) i++; } } // so now chars[i] was not found in the current trie, so add it if(i < chars.length) { trie.addNode(currentNode, chars[i] ); //System.out.println("(" + currentNode.intvalue + ", " + chars[i] + ")"); // we put the encoding here io.encode(currentNode.intvalue, chars[i]); currentNode = rootNode; i++; } } // end big while io.done(); } // end compress private static void decompress(String fileName) throws java.lang.Exception { // Initialize a IO.Decompressor object so that it is ready // to read the sequence of pairs from infile, and to write // the decompressed file to the disk IO.Decompressor io = new IO.Decompressor(fileName); while(true) // change this ... { // Every call to io.decode() returns the next unprocessed pair from the // compressed file. next.valid is false if no more pairs are left. IO.pair next = io.decode(); // output is the latest entry that was added to the // dictionary, append it to the decompressed file //io.append(output); break; // just to compile, take out } // Close all relevant files io.done(); } public static void main (String args[]) throws java.lang.Exception { String fileName, funcType; try { funcType = args[0]; fileName = args[1]; if(funcType.equals("c") || funcType.equals("C")) compress(fileName); else if(funcType.equals("d") || funcType.equals("D")) decompress(fileName); } catch(ArrayIndexOutOfBoundsException aE) { System.out.println("Thrown to indicate that an array has been accessed with an illegal index." + aE.getMessage()); } }// end of main } // end class Comp