public static void decompressFile(String input, String output){
		byte[] data = new byte[0];//All the bytes from the input
		//Read the input
		try{
			data = Files.readAllBytes(Paths.get(input));
		}catch(Exception e){
			e.printStackTrace();
		}

		ArrayList<Character> unique = new ArrayList<Character>();//Local unique character list
		MapList<Character, Integer> frequencies = new MapList<Character, Integer>();//Local frequency map

		int i;//need indexing for later
		//Create the frequency map
		for(i = 0; i < data.length; i+= 5){
			int freq = data[i+1] + data[i+2] + data[i+3] + data[i+4];
			if(freq == 0)
				break;//If reach a frequency of zero, we know this character does not exist so this is the end of header
			frequencies.put((char) data[i], freq);
			unique.add((char)data[i]);
		}

		i+=5;//Shift the index to the start of the code
		translate = buildTrie(frequencies, unique);//Create the Huffman Trie
		StringBuilder sb = new StringBuilder();//StringBuilder for the binary representation
		int a;
		for(; i<data.length; i++){
			a = data[i] & 0xFF;//Fixes negative integers to be representable as a byte
			String binaryString = Integer.toBinaryString(a);
			StringBuilder binaryStringBuilder = new StringBuilder(binaryString);//Builder for byte length
			//Extends ensures that the binary String is 8 bits long
			while(binaryStringBuilder.length() < 8){
				binaryStringBuilder.insert(0, '0');
			}
			sb.append(binaryStringBuilder.toString());
		}

		char[] decypher = sb.toString().toCharArray();//Character array of all the bits

		Node temp = root;//Temporary Node for traversal

		StringBuilder result = new StringBuilder();//String builder for the final result

		for(int j = 0; j < decypher.length; j++){
			temp = temp.traverse(Integer.parseInt(decypher[j] + ""));//Traverse either 1 or 0
			//If we are at a leaf then this is a character and we reset the pointer to the root
			if(temp instanceof Leaf){
				result.append(((Leaf) temp).getChar());
				temp = root;
			}

		}
		//Write the translation to the file
		try{
			FileWriter fw = new FileWriter(output);
			fw.write(result.toString());
			fw.close();
			
			System.out.println(input + " was decompressed successfully!");
		}catch(Exception e){
			System.out.println(input + " was decompressed unsuccessfully!");
		}

	}