java IO复习(三)
package com.zyw.io; import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern; /**
* 目录实用工具
* from think in java
*/
public class Directory {
public static File[] local(File dir,final String regex){
return dir.listFiles(new FilenameFilter() {
private Pattern pattern=Pattern.compile(regex);
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(new File(name).getName()).matches();
}
});
}
public static File[] local(String path,final String regex){
return local(new File(path),regex);
}
public static class TreeInfo implements Iterable<File>{
public List<File> files=new ArrayList<File>();
public List<File> dirs=new ArrayList<File>();
@Override
public Iterator<File> iterator() {
return files.iterator();
}
void addAll(TreeInfo other){
files.addAll(other.files);
dirs.addAll(other.dirs);
}
public String toString(){
return "dirs: "+PPrint.pformat(dirs)+"\n\nfiles: "+PPrint.pformat(files);
}
}
public static TreeInfo walk(String start,String regex){return recurseDirs(new File(start),regex);}
public static TreeInfo walk(File start,String regex){return recurseDirs(start,regex);}
public static TreeInfo walk(File start){return recurseDirs(start,".");}
public static TreeInfo walk(String start){return recurseDirs(new File(start),".");}
static TreeInfo recurseDirs(File startDir,String regex){
TreeInfo result=new TreeInfo();
for(File item: startDir.listFiles()){
if(item.isDirectory()){
result.dirs.add(item);
result.addAll(recurseDirs(item,regex));//以新的目录为起点
}else {
if(item.getName().matches(regex))
result.files.add(item);
}
}
return result;
}
public static void main(String args[]){
System.out.println(walk("G:\\zyw",".*\\.class"));
}
}
package com.zyw.io; import java.util.Arrays;
import java.util.Collection; /**
* 打印工具
*/
public class PPrint {
public static String pformat(Collection<?> c){
if(c.size()==0) return "[]";
StringBuilder result=new StringBuilder("[");
for(Object elem:c){
if(c.size()!=1)
result.append("\n ");
result.append(elem);
}
if(c.size()!=1) result.append("\n");
result.append("]");
return result.toString();
}
public static void pprint(Collection<?> c){
System.out.println(pformat(c));
}
public static void pprint(Object[] c){
System.out.println(pformat(Arrays.asList(c)));
}
}
java IO复习(三)的更多相关文章
- Java IO(三)FileDescriptor
Java IO(三)FileDescriptor 一.介绍 FileDescriptor 是文件描述符,用来表示开放文件.开放套接字等.当 FileDescriptor 表示文件时,我们可以通俗的将 ...
- java IO复习笔记
1. IO是什么? Input Output Java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流, ...
- JAVA IO分析三:IO总结&文件分割与合并实例
时间飞逝,马上就要到2018年了,今天我们将要学习的是IO流学习的最后一节,即总结回顾前面所学,并学习一个案例用于前面所学的实际操作,下面我们就开始本节的学习: 一.原理与概念 一.概念流:流动 .流 ...
- Java IO(三)——字节流
一.流类 Java的流式输入/输出是建立在四个抽象类的基础上的:InputStream.OutputStream.Reader.Writer.它们用来创建具体的流式子类.尽管程序通过具体子类执行输入/ ...
- Java IO复习 UDP
客户端: package cn.zyw.javaurl; import java.io.IOException; import java.net.*; /** * Created by zyw on ...
- java IO复习(二)
package com.zyw.file; import java.io.*; /** * Created by zyw on 2016/3/10. */ public class FileTest2 ...
- Java IO复习(一)
package com.zyw.file; import java.io.*; /** * Created by zyw on 2016/3/10. */ public class IOTest { ...
- Java IO(三)
在Java IO提供的类中,除了前面介绍的RandomAccessFile类之外,还有一系列的io操作类. 主要分为两大类.字符流和字节流.关系图如下: 在Java IO的操作中,很好的体现了Java ...
- Java IO学习--(三)通道
Java IO中的管道为运行在同一个JVM中的两个线程提供了通信的能力.所以管道也可以作为数据源以及目标媒介. 你不能利用管道与不同的JVM中的线程通信(不同的进程).在概念上,Java的管道不同于U ...
随机推荐
- Object-c 创建对象
创建对象有两种方法: 1. NSString *str = [NSString string]; 2. NSString *myStr = [[NSString alloc]init]; 第一种创建方 ...
- UITabBar-UITabBarItem图片的背景颜色属性和文字的颜色大小设置
UITabBarItem设置的图片选中状态下默认的是蓝色,如何改变它的颜色为图片自带的颜色呢? typedef NS_ENUM(NSInteger, UIImageRenderingMode) { / ...
- 禁用UITextField复制粘贴等方法
要实现此功能只需创建一个继承自UITextField的子类,重写以下方法即可. - (BOOL)canPerformAction:(SEL)action withSender:(id)sender{ ...
- js作用域链
js作用域链 <script> var up = 555; function display(){ var innerVar = 2; function inner(){ var inne ...
- PHP临时文件session的分级存储与定期删除
在Windows上PHP默认的Session服务端文件存放在C:\WINDOWS\Temp下,如果说并发访问很大或者 session建立太多,目录下就会存在大量类似sess_xxxxxx的sessio ...
- Java学习----集合函数
1.List----有序的collection(序列) 与数组的不同:数据类型可以相同可以不同,数组的长度是预先定义好的,集合的长度也是预先定义好的,但是长度会随着元素的增加而增加 ArrayList ...
- 细介Nigix配置与反向代理
Nginx(发 音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下 发行.由俄罗斯的程序设计师Igor S ...
- Js 获取 本周、本月起始时间
涉及到显示本月或本周相关信息,又不想让php去判断,只好直接用js去计算,麻烦了好一阵,还是老老实实的看了下js的日期函数.现总结一下: //计算本周起始日期,并以 Y-m-d 形式返回. fu ...
- Yeoman安装
Yeoman帮助我们创建项目,提供更好的工具来使我们的项目更多样化. Yeoman提供generator系统,一个generator是一个插件,在我们在一个完整的项目上使用‘yo’命令时,会运行该ge ...
- python运维开发之第二天
一.模块初识: 1.模块定义 python是由一系列的模块组成的,每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲突的问题.模块我们就可以理解为lib库,如果需要使用某 ...