@Override
	public boolean pakkaaTiedosto() throws FileNotFoundException, IOException {
		BufferedReader r = new BufferedReader(new FileReader(lahde));
		FileOutputStream fos = new FileOutputStream(kohde);
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		
		try {
			long lahdePituus = lahde.length();
			HajautusTaulukko esiintyvyydet = annaEsiintyvyydet(r);
			r.close();
			
			//Jrjestetn merkit esiintyvyyden perusteella MinimiKekoa kytten
			MinimiKeko jono = priorisoiAvaimet(esiintyvyydet.avaimet(), esiintyvyydet.arvot());
			HuffmanPuuSisaSolmu juuri = luoHuffmanPuu(jono);
			luoMerkkiKoodiTaulukot(juuri, "");
			System.out.println("Merkkitaulukot luotu");
			
			//kirjoitetaan sanasto objektina:
			oos.writeObject(koodistaMerkki);
			//kirjoitetaan lhdetiedoston merkkien mr Longina (vaaditaan viimeisen merkin katkaisua varten purussa!)
			oos.writeObject(new Long(lahdePituus));
			//Alustetaan r uudestaan lukemaan lhdetiedosto alusta
			r = new BufferedReader(new FileReader(lahde));
			BittiOutputStream bios = new BittiOutputStream(bos);
			kirjoitaPakattuTiedosto(r,bios);
			bios.close();
			r.close();
			bos.flush();
			bos.close();
			fos.close();
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}