private void extractFile(int i) throws IOException {

        FileOutputStream output;
        FileInputStream input;
        byte[] stuffToWrite;
        String path = archiveFiles.getArchiveFiles().get(i).getFilePath();
        long length = archiveFiles.getArchiveFiles().get(i).getLength();
        long offset = archiveFiles.getArchiveFiles().get(i).getOffset();
        boolean outcome = true;
        stuffToWrite = new byte[(int) length];
        input = new FileInputStream((rafArchiv + ".dat"));

        File fyl = new File("Output/" + path);
        fyl.getParentFile().mkdirs();

        output = new FileOutputStream("Output/" + path);
        input.skip(offset);
        input.read(stuffToWrite, 0, (int) length);


        InflaterInputStream towrite = new InflaterInputStream(new ByteArrayInputStream(stuffToWrite));

        List<Byte> writeDisLyst = new ArrayList<Byte>();
        int tmp;

        try {
            while ((tmp = towrite.read()) != -1) {
                writeDisLyst.add((byte) tmp);
            }
        } catch (ZipException e) {
            outcome = false;
        }
        output.write(convertBytes(writeDisLyst), 0, writeDisLyst.size());

        output.close();
        input.close();

        System.out.format((outcome?"OK   ":"FAIL ") + "|%-9s |%-8s| %s%n", offset, length, path);
    }