public void run() {
		ZipInputStream in = new ZipInputStream(inFile);
		ZipEntry entry;

		try {
			while (!suspending) {
			    while ((entry = in.getNextEntry()) != null) {
	                String fileName = entry.getName();
					File newFile = new File(outDirectory + File.separator + fileName);
	                new File(newFile.getParent()).mkdirs();
	                int size;
	                byte[] buffer = new byte[2048];
	                while ((size = in.read(buffer, 0, buffer.length)) != -1) {
	                	if (!newFile.exists()) {
	                		newFile.createNewFile();
	                	}
	                    outFile = new TransactionalFileOutputStream(newFile.getName(), false);                	
	                    outFile.write(buffer, 0, size);
	                }
			    }
			    in.closeEntry();
			    in.close();
			    System.out.println("Done");
			    break;
			}
		} catch (Error e) {
			System.out.println ("Unzip: Error: " + e);
		} catch (IOException e) {
			e.printStackTrace();
		}
		suspending = false;
	}