public static void copyPEFiles(File startFolder) throws IOException {
		File[] files = startFolder.listFiles();
		if (files == null) {
			System.out.println("Skipped unreadable file: "
					+ startFolder.getCanonicalPath());
			return;
		}
		for (File file : files) {
			total++;
			if (file.isDirectory()) {
				copyPEFiles(file);
			} else {
				try {
					new PESignature(file).read();
					Files.copy(file.toPath(),
							Paths.get(output.getAbsolutePath(), file.getName()));
					written++;
				} catch (FileFormatException e) {
					noPE++;
				} catch (FileAlreadyExistsException e) {
					System.err.println("file already exists: " + file.getName()
							+ " not copied!");
					notLoaded++;
				} catch (Exception e) {
					System.err.println(e.getMessage());
					notLoaded++;
				}
				if (total != prevTotal && total % 1000 == 0) {
					prevTotal = total;
					System.out.println("Files found: " + total);
					System.out.println("PE Files found: " + written);
				}
			}
		}
		dirsRead++;
		if (dirsRead % 500 == 0) {
			System.out.println("Directories read: " + dirsRead);
			System.out.println("Current Directory finished: "
					+ startFolder.getAbsolutePath());
		}
	}