package edu.berkeley.nlp.util; import java.io.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class IOUtil { public static File createTempDirectory(String prefix) throws IOException { File tempFile = File.createTempFile(prefix, ""); if (!tempFile.delete()) throw new IOException(); if (!tempFile.mkdir()) throw new IOException(); return tempFile; } /** * * @param dir * @param filePrefix * @param fileExt * @param recursive * @return */ public static List<File> getFilesUnder( final String dir, // Directory final String filePrefix, // Prefix for files final String fileExt, // Extension of files final boolean recursive) { List<File> files = new ArrayList<File>(); File dirFile = new File(dir); if (!dirFile.exists()) return files; if (!dirFile.isDirectory()) return Collections.singletonList(dirFile); for (File f: dirFile.listFiles()) { if (f.isDirectory()) { if (recursive) files.addAll(getFilesUnder(f.getAbsolutePath(),filePrefix,fileExt,recursive)); continue; } String name = f.getName(); if (name.startsWith(filePrefix) && name.endsWith(fileExt)) { files.add(f); } } return files; } public static FileFilter getFileFilter(final String prefix, final String ext) { return new FileFilter() { public boolean accept(File pathname) { // TODO Auto-generated method stub String name = pathname.getName(); return name.startsWith(prefix) && name.endsWith(ext); } }; } public static boolean deleteDir(File dir) { if (dir.isDirectory()) { String[] children = dir.list(); for (int i = 0; i < children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { return false; } } } // The directory is now empty so delete it return dir.delete(); } public static FileReader fileReaderHard(String filename) { try { return new FileReader(filename); } catch (FileNotFoundException e) { e.printStackTrace(); System.exit(0); } throw new IllegalStateException(); } public static String getPath(String parentPath, String childName) { return new File(parentPath,childName).getPath(); } }