1 我写的小例子
通配符过滤目录下的文件
File dir = new File("."); FileFilter fileFilter = new WildcardFileFilter("*test*.java~*~"); File[] files = dir.listFiles(fileFilter); for (int i = 0; i < files.length; i++) { System.out.println(files[i]); }
过滤文件大小
File dir = new File("."); String[] files = dir.list( new SizeFileFilter(1024 * 1024) ); for ( int i = 0; i < files.length; i++ ) { System.out.println(files[i]); }
文件后缀名
File dir = new File("."); String[] files = dir.list( new SuffixFileFilter(".java") ); for (int i = 0; i < files.length; i++) { System.out.println(files[i]); }
正则表达式
File dir = new File("."); FileFilter fileFilter = new RegexFileFilter("^.*[tT]est(-\\d+)?\\.java$"); File[] files = dir.listFiles(fileFilter); for (int i = 0; i < files.length; i++) { System.out.println(files[i]); }
前缀
File dir = new File("."); String[] files = dir.list( new PrefixFileFilter("Test") ); for ( int i = 0; i < files.length; i++ ) { System.out.println(files[i]); }
File file = new File(fileName); // FileUtils.writeStringToFile(file, "fasdfasdfsadf");// 会覆盖 System.out.println(File.pathSeparator); System.out.println(File.separator); System.out.println(Charset.defaultCharset()); Files.append(System.getProperty("line.separator") + "22222222222", file, Charset.defaultCharset());// 不分行的 // Files.write("3333333333", file, Charset.defaultCharset());// 会覆盖 System.out.println(FileUtils.readFileToString(file));
import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; import java.util.Collection; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.io.filefilter.DirectoryFileFilter; import org.apache.commons.io.filefilter.FileFilterUtils; public final class FileFilterTest { private FileFilterTest() { } /** * 打印这个目录下所有.java结尾的文件名 */ private static void printFile() { String realPath = "D://eclipse_workspace//swp//src//com//snda//swp"; File dir = new File(realPath); // FILE类的list不能递归 /* * String files[] = dir.list(FileFilterUtils.suffixFileFilter(".java")); * for(String f : files){ System.out.println(f); } */ @SuppressWarnings("unchecked") Collection<File> files = FileUtils.listFiles(dir, FileFilterUtils.suffixFileFilter(".java"), DirectoryFileFilter.INSTANCE); System.out.println(files.size()); for (File f : files) { System.out.println(f.getName()); } } /** * 把一个网址的内容复制到一个临时文件夹下的临时文件中去 * * @throws IOException * @throws URISyntaxException */ private static void uri2File() throws IOException, URISyntaxException { String uri = "http://g.cn"; URL source = new URL(uri); File destination = File.createTempFile("tempfile", null);// 创建临时文件 FileUtils.copyURLToFile(source, destination); System.out.println(FileUtils.readFileToString(destination)); FileUtils.forceDeleteOnExit(destination); } /** * 打印一个URL的内容 * * @throws IOException */ private static void uri2String() throws IOException { String uri = "http://g.cn"; URL source = new URL(uri); System.out.println(IOUtils.toString(source.openStream())); } private static void uri2String(String uri) throws IOException { URL source = new URL(uri); System.out.println(IOUtils.toString(source.openStream())); } private static void uri2String(String uri, String encoding) throws IOException { URL source = new URL(uri); if (encoding == null) uri2String(uri); System.out.println(IOUtils.toString(source.openStream(), encoding)); } /** * @param args */ public static void main(String[] args) { try { String uri = "http://192.168.101.181:8440/web5/home/NewsData.asp"; uri2String(uri, "gb2312");//要用gb2312解码 不然会乱码 } catch (IOException e) { e.printStackTrace(); } } }
创建临时文件 然后再删除
FileUtils.forceDeleteOnExit(destination);
2 FileUtils.deleteDirectory
删除一个目录 会先递归删除这个目录下的文件和子目录
最后删除目录 如果目录删除不了 会抛异常
guava库的
Files.deleteDirectoryContents方法递归删除但是不删除目录本身
Files.deleteRecursively 递归删除
forceDeleteOnExit(File file)
当强制JVM退出时,删除file变量对应的文件或者目录。在处理临时目录上非常好用。
3 引用自JDK1.6