@Override
	public boolean puraTiedosto() throws FileNotFoundException, IOException {
		System.out.println("LZW purku aloitetaan");
		//BufferedInputStream bis = new BufferedInputStream(new FileInputStream(lahde));
		BittiInputStream bis = new BittiInputStream(new BufferedInputStream(new FileInputStream(lahde)));
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(kohde));

		 String[] sanasto = new String[4096];
		 int i;
		 int bittiLaskuri = 0;
		 int tavuLaskuri = 0;
	     int kierrosLaskuri = 0;

	     // Laitetaan kaikki 8-bittiset merkit sanastoon valmiiksi
	     for (i = 0; i < 256; i++)
	            sanasto[i] = "" + (char) i;
	     
	     int koodiSana = 0;
	     String edellinenMerkkijono = "";
	     int suurinKoodi = i;
	     int seuraavaKoodi = 256;
	     
	     while ((koodiSana = bis.read(12)) != -1) {
	    	 kierrosLaskuri++;
	    	 bittiLaskuri += 12;
	    	 if (sanasto[koodiSana] == null) {
	    		sanasto[koodiSana] = edellinenMerkkijono + edellinenMerkkijono.charAt(0);
	    		 suurinKoodi = koodiSana;
	    	 }
    		 bos.write(sanasto[koodiSana].getBytes());
	    	 tavuLaskuri += sanasto[koodiSana].length();
	    	 if ( edellinenMerkkijono != null && edellinenMerkkijono.length() > 0) {
	    		 sanasto[seuraavaKoodi] = edellinenMerkkijono + sanasto[koodiSana].charAt(0);
	    		 if (suurinKoodi < seuraavaKoodi)
	    			 suurinKoodi = seuraavaKoodi;
	    		 seuraavaKoodi++;
	    	 }
	    	 edellinenMerkkijono = sanasto[koodiSana];
	    	 //Jos sanasto on tynn, hyltn se ja alustetaan uudestaan:
	    	 if (seuraavaKoodi == 4096) {
	    		 sanasto = new String[4096];
	    	     for (i = 0; i < 256; i++)
	 	            sanasto[i] = "" + (char) i;
	    	    seuraavaKoodi = 256;
	    	 }
	     }
	     bis.close();
	     bos.flush();
	     bos.close();
	     return true;
	}