public static String relativePath(File fromFile, File toFile) { return relativePath(fromFile, toFile, File.separatorChar); }
/** extracts the filename part after the last dot * @param file the file to examine * @return the file suffix without dot */ public static String suffix(File file) { return suffix(file.getName()); }
public static void ensureDirectoryExists(File directory) { if (directory != null && !directory.exists()) { File parent = directory.getParentFile(); if (parent != null) ensureDirectoryExists(parent); directory.mkdir(); } }
private static void copyDirectory(File srcDirectory, File targetDirectory, boolean overwrite, FileFilter filter) throws FileNotFoundException, IOException { ensureDirectoryExists(targetDirectory); for (File src : srcDirectory.listFiles()) { File dstFile = new File(targetDirectory, src.getName()); copy(src, dstFile, overwrite, filter); } }
public static void copy(File srcFile, File targetFile, boolean overwrite, FileFilter filter) throws FileNotFoundException, IOException { if (filter != null && !filter.accept(srcFile.getCanonicalFile())) return; if (!srcFile.exists()) throw new ConfigurationError("Source file not found: " + srcFile); if (!overwrite && targetFile.exists()) throw new ConfigurationError("Target file already exists: " + targetFile); if (srcFile.isFile()) copyFile(srcFile, targetFile); else copyDirectory(srcFile, targetFile, overwrite, filter); }
public static List<File> listFiles(File dir, String regex, boolean recursive, boolean acceptingFiles, boolean acceptingFolders) { PatternFileFilter filter = new PatternFileFilter(regex, acceptingFiles, acceptingFolders); return addFilenames(dir, filter, recursive, new ArrayList<File>()); }
public static void deleteDirectoryIfExists(File folder) { if (folder.exists()) deleteDirectory(folder); }
public static void copy(File srcFile, File targetFile, boolean overwrite) throws FileNotFoundException, IOException { copy(srcFile, targetFile, overwrite, null); }
public static File fileOfLimitedPathLength(File directory, String name, String suffix, boolean warn) { return fileOfLimitedPathLength(directory, name, suffix, 255, warn); }
private static List<File> addFilenames(File dir, FileFilter filter, boolean recursive, List<File> buffer) { File[] matches = dir.listFiles(filter); if (matches != null) for (File match : matches) buffer.add(match); if (recursive) { File[] subDirs = dir.listFiles(DirectoryFileFilter.instance()); if (subDirs != null) for (File subFolder : subDirs) addFilenames(subFolder, filter, recursive, buffer); } return buffer; }
public static void deleteDirectory(File folder) { File[] files = folder.listFiles(); if (files != null) { for (File file : files) { if (file.isDirectory()) deleteDirectory(file); else file.delete(); } } folder.delete(); }
public static void copyDirectory(URL srcUrl, File targetDirectory, Filter<String> filenameFilter) throws IOException { LOGGER.debug("copyDirectory({}, {}, {})", new Object[] { srcUrl, targetDirectory, filenameFilter }); String protocol = srcUrl.getProtocol(); if (protocol.equals("file")) { try { FileUtil.copy(new File(srcUrl.toURI()), targetDirectory, true, new FileByNameFilter(filenameFilter)); } catch (URISyntaxException e) { throw new RuntimeException("Unexpected exception", e); } } else if (protocol.equals("jar")) { String path = srcUrl.getPath(); int separatorIndex = path.indexOf("!"); String jarPath = path.substring(5, separatorIndex); // extract jar file name String relativePath = path.substring(separatorIndex + 2); // extract path inside jar file if (!relativePath.endsWith("/")) relativePath += "/"; extractFolderFromJar(jarPath, relativePath, targetDirectory, filenameFilter); } else throw new UnsupportedOperationException("Protocol not supported: "+ protocol + " (URL: " + srcUrl + ")"); }
public static Script readFile(String uri) throws IOException { Script script = scriptsByName.get(uri); if (script == null) { String engineId = FileUtil.suffix(uri); ScriptFactory factory = getFactory(engineId, true); script = factory.readFile(uri); scriptsByName.put(uri, script); } return script; }
private static void addFile(File source, File root, ZipOutputStream out) throws IOException { byte[] buffer = new byte[BUFFER_SIZE]; InputStream in = new BufferedInputStream(new FileInputStream(source)); ZipEntry entry = new ZipEntry(FileUtil.relativePath(root, source)); out.putNextEntry(entry); int count; while ((count = in.read(buffer, 0, BUFFER_SIZE)) != -1) out.write(buffer, 0, count); in.close(); }
@SuppressWarnings("resource") public static PrintWriter getPrinterForURI(String uri, String encoding, boolean append, final String lineSeparator, boolean autoCreateFolder) throws FileNotFoundException, UnsupportedEncodingException { File file = new File(uri); if (autoCreateFolder) FileUtil.ensureDirectoryExists(file.getParentFile()); return new PrintWriter(new OutputStreamWriter(new FileOutputStream(uri, append), encoding)) { @Override public void println() { print(lineSeparator); } }; }
public static Script readFile(String uri) throws IOException { Script script = scriptsByName.get(uri); if (script == null) { String engineId = FileUtil.suffix(uri); ScriptFactory factory = getFactory(engineId); script = factory.readFile(uri); scriptsByName.put(uri, script); } return script; }
public String relativeLinkFrom(File referer) { return linkForURL(FileUtil.relativePath(referer, file, '/')); }
private void saveState() { try { FileUtil.ensureDirectoryExists(new File(DATABENE_DIRECTORY_NAME)); Map<String, String> props = new OrderedMap<String, String>(); props.put("exclusionPattern", exclusionField.getText()); IOUtil.writeProperties(props, GUI_PROPERTIES_FILE_NAME); } catch (IOException e) { // writing the file failed but isn't tragic } }
@Override public Script readFile(String uri) throws IOException { String text = IOUtil.getContentOfURI(uri); String type = FileUtil.suffix(uri); return parseText(text, type); }
public String relativeLinkFrom(File referer) { return linkForURL(FileUtil.relativePath(referer, file, '/')); }