private void extractFile(String relativeClasspath) throws IOException { InputStream resourceStream = this.getClass().getResourceAsStream(relativeClasspath); if (resourceStream == null) { rootDoc.printWarning("Cannot found internal resource \"" + relativeClasspath + "\""); } rootDoc.printNotice("Extracting resource \"" + relativeClasspath + "\"..."); File outputFile = new File(this.outputDir, relativeClasspath); File directory = outputFile.getParentFile(); if (!directory.isDirectory()) { rootDoc.printWarning("Cannot write file \"" + outputFile.getAbsolutePath() + "\""); return; } if (!directory.exists() && !directory.mkdirs()) { rootDoc.printWarning("Cannot create directory \"" + directory.getAbsolutePath() + "\n"); return; } FileOutputStream fileOutputStream = new FileOutputStream(outputFile); try { byte[] buffer = new byte[512]; int nbRead = 0; while ((nbRead = resourceStream.read(buffer)) != -1) { fileOutputStream.write(buffer, 0, nbRead); } } finally { fileOutputStream.close(); } }
protected void printWarning(Exception e) { root.printWarning(e.getMessage()); }