java思想IO--目录列表器带有简单过滤
来源:互联网 发布:手机如何注册淘宝会员 编辑:程序博客网 时间:2024/06/05 08:25
简单获取目录列表:
/* new File("."); "." 表示从项目所在目录下开始查找 "src" 从项目目录下的src文件夹中查找下一级文件
如果"src" 不存在路径则报错 Exception in thread "main" java.lang.NullPointerException
此方法仅能查找当前目录下的文件或者其子文件不能更深一层 */
Filepath = new File(".");
list = path.list();
目录列表器带有简单过滤:
过滤功能:将不符合后缀的,或者文件内容不包含指定字符串的文件过滤
public static void main(String[] arg) {
File path = new File(".");
String[] list;
/*第一个字符串设置 文件后缀 第二个字符串设置包含的字符串 最后输出符合的文件*/
String[] args = {".txt","src"};
/*如果没有条件,则将所有结果赋值给list 简单获取列表*/
if (args.length == 0) {
list = path.list();
}else {
/* list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。 */
list = path.list( new FilenameFilter() {
/*对匿名filenameFilter进行重写方法*/
/*获取匹配条件*/
private String ext = args[0].toLowerCase();
@Override
public boolean accept(File dir, String name) {
/*匹配以规定条件结尾的文件或者目录*/
if (name.toLowerCase().endsWith(ext)) {
/*获取set集合 特性:不重复*/
Set<String> words = new HashSet<String>(
/* \W+ 匹配任何非单词字符一次或者多次。等价于“[^A-Za-z0-9_]+”
用于TextFile中split() */
/*匿名函数*/ new TextFile(new File(
dir,name).getAbsolutePath(), "\\W+"));
if (words.contains(args[1]))
return true;
}
return false;
}
});
}
Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
for (String dirItem : list) {
System.out.println(dirItem);
}
}
File的list方法源码:
public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
List<String> v = new ArrayList<>();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return v.toArray(new String[v.size()]);
}
TextFile源码:
public TextFile(String fileName, String splitter) {
/*调用的是父类ArrayList的有参构造* */
super(Arrays.asList(read(fileName).split(splitter)));
/*如果 集合的元素0位空 则删除元素*/
if(get(0).equals("")) remove(0);
}
TextFile read方法源码:
public static String read(String fileName) {
StringBuilder sb = new StringBuilder();
try {
BufferedReader in= new BufferedReader(new FileReader(
new File(fileName).getAbsoluteFile()));
try {
String s;
while((s = in.readLine()) != null) {
sb.append(s);
sb.append("\n");
}
} finally {
in.close();
}
} catch(IOException e) {
throw new RuntimeException(e);
}
return sb.toString();
}
- java思想IO--目录列表器带有简单过滤
- java IO 目录列表器
- 带有下拉列表的Android简单计算器
- java IO File对象(构造,创建删除,获取,判断,重命名,列出目录(加过滤))
- Java编程思想-IO系统
- Java IO 目录
- java io默认目录
- Java IO 目录
- java--IO--目录
- java简单敏感过滤
- java简单编程思想
- Java IO 概念 Java编程思想读书笔记
- Java IO --- 节点流和过滤流
- java编程思想io(源码)
- java IO简单操作
- java IO 简单应用
- 简单的JAVA IO
- 过滤列表
- 容器生态系统
- 规划之博客定期更新
- 算法中的递归分析和分治法的原理
- HDU 4548 Shoot the Airplane 计算几何
- 八数码问题的过程表示及其实现
- java思想IO--目录列表器带有简单过滤
- Ubuntu下Hive-2.1.1安装
- 一个小案例:用SysGen做一个DDS信号发生器并用FFT频谱分析 1.原理图
- node---http模块,如何用node.js做简单的服务器环境http.createServer
- 利用Base64对文本进行加密解密操作
- HDU 5253 连接的管道(最小生成树)
- java数组中根据元素查找位置 索引
- poj 1556 线段相交 + dijstra
- For 循环编程题