`
imaginecup
  • 浏览: 87402 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java编程思想 IO1源码

阅读更多
目录列表器与目录过滤器的运用
package com.dirlist;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;
/*  args=D.*\.java   */
public class DirList {

/**
* 目录列表器与目录过滤器
*/
public static void main(String[] args) {
File path=new File("src/com/dirlist");

String[] fileList = null;
if(args.length==0){
System.out.println("没有默认初始值");
//返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。
fileList=path.list();
}else{
System.out.println("有默认初始值");

//返回由包含在目录中的文件和目录的名称所组成的字符串数组,这一目录是通过满足指定过滤器的抽象路径名来表示的。
//当且仅当在此抽象路径名和它所表示的目录中的文件名或目录名上调用过滤器的 FilenameFilter.accept(java.io.File, java.lang.String)
//方法返回 true 时,该名称才满足过滤器。
fileList=path.list(new DirFilter(args[0]));
System.out.println(fileList.length);
}
//此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
//根据指定比较器产生的顺序对指定对象数组进行排序。
//String.CASE_INSENSITIVE_ORDER是一个排序 String 对象的 Comparator,它的作用与 compareToIgnoreCase 相同。该比较器是可序列化的。
Arrays.sort(fileList,String.CASE_INSENSITIVE_ORDER);
for(String dirItem:fileList){
System.out.println(dirItem);
}

}
}
class DirFilter implements FilenameFilter{
//Pattern正则表达式的编译表示形式。
private Pattern pattern;
public DirFilter(String regex){
//指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象
//将给定的正则表达式编译到模式中。
pattern=Pattern.compile(regex);
}
public boolean accept(File dir, String name) {

System.out.println(dir.getAbsolutePath());
//创建匹配给定输入与此模式的匹配器,并且尝试将整个区域与模式匹配。
System.out.println(pattern.matcher(name).matches());
return pattern.matcher(name).matches();
}
创建DirFilter类的目的在于将accept()方法提供给list()使用,使list()可以回调accept()方法。list()方法会为此目录下的所有文件名调用accept()方法,来判断是否符合你定义的目录过滤器。判断结果由accept()返回的布尔值表示。


FilenameFilter.accept(java.io.File, java.lang.String) 源码解析:

public String[] list(FilenameFilter filter) {
String names[] = list();//File.list()返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。

if ((names == null) || (filter == null)) {
    return names;
}//如果返回的字符串数组或目录过滤器为空,则返回字符串数组
ArrayList v = new ArrayList();
for (int i = 0 ; i < names.length ; i++) {
    if (filter.accept(this, names[i])) {
v.add(names[i]);//如果满足过滤条件,则插入
    }
}
return (String[])(v.toArray(new String[v.size()]));//将满足过滤器的目录名或文件名转化为字符串数组并返回
    }
利用匿名内部类实现:
DirList2.java
package com.dirlist;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;

public class DirList2 {

/**
*利用匿名内部类
*/
//传向filte的参数必须是final的。这在匿名内部类中是必需的,只有这样匿名内部类才能使用来自类范围之外的对象
public static FilenameFilter filter(final String regex){
return new FilenameFilter(){
private Pattern pattern=Pattern.compile(regex);
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
};
}
public static void main(String[] args) {
File path=new File("src/com/dirlist");
String[] fileList=null;
if(args.length==0){
fileList=path.list();
}else{
fileList=path.list(DirList2.filter(args[0]));
}
Arrays.sort(fileList, String.CASE_INSENSITIVE_ORDER);
for(String fileItem:fileList){
System.out.println(fileItem);
}

}

}
DirList3.java
package com.dirlist;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;

public class DirList3 {

/**
* @param args
*/
public static void main(final String[] args) {
File path=new File("src/com/dirlist");
String[] fileList=null;
if(args.length==0){
fileList=path.list();
}else{
fileList=path.list(new FilenameFilter(){
private Pattern pattern=Pattern.compile(args[0]);
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
});
}
Arrays.sort(fileList,String.CASE_INSENSITIVE_ORDER);
for(String fileItem:fileList){
System.out.println(fileItem);
}

}

}

希望对大家有用!!!
1
1
分享到:
评论

相关推荐

    java编程思想练习题答案

    《Java编程思想》是Bruce Eckel的经典之作,它深入浅出地介绍了Java语言的核心概念和技术。这本书中的练习题是学习者提升技能的重要途径,而这个压缩包提供的就是这些练习题的解答,以源码的形式保存为.java文件。...

    Java编程思想侯捷编译第二版

    《Java编程思想》是Java开发领域的一本经典著作,由美国著名程序员Bruce Eckel撰写,侯捷翻译的中文版在中文读者中广受欢迎。这本书深入浅出地介绍了Java语言的核心概念和技术,对于初学者和有经验的开发者来说,都...

    Java编程思想 中文文档

    《Java编程思想》是 Bruce Eckel 的经典著作,这本书深入浅出地介绍了Java语言的核心概念和技术,对于初学者和有经验的程序员来说都是极好的学习资源。中文文档的出现使得更多的中国开发者能够无障碍地理解这本权威...

    java编程思想笔记

    《Java编程思想笔记》是基于 Bruce Eckel 的经典著作 "Thinking in Java" 所做的学习总结,这本书深入浅出地介绍了Java语言的核心概念和技术。在本文中,我们将围绕Java编程的一些关键知识点进行深入探讨,包括但不...

    java 编程思想

    "Java编程思想第四版源码"则包含了书中所有示例的完整代码,读者可以直接运行和调试,加深对理论知识的理解。 总的来说,这本书不仅讲解了Java的基本语法和高级特性,还涵盖了企业级开发中常用的技术,是学习和进阶...

    Java编程思想_第4版_源代码

    《Java编程思想》是Bruce Eckel的经典之作,其第四版更是深受全球程序员喜爱。这本书深入浅出地介绍了Java语言的核心概念和技术,对于初学者和经验丰富的开发者来说都是极好的参考资料。书中通过大量的实例来讲解...

    JAVA API官方源码

    Java API是Java编程语言的核心库,它包含了众多用于构建应用程序的基本类和接口。在Java 1.8.0版本中,这些API源码被封装在`src.zip`压缩包内,位于JDK安装目录下。这个压缩包为开发者提供了一个深入了解Java内部...

    传智播客毕向东java视频源码

    源码是理解编程思想和实现机制的关键。通过分析和学习这些源代码,我们可以深入掌握Java编程的核心概念和最佳实践。以下是一些可能涵盖的知识点: 1. **基础语法**:源代码可能包括变量声明、数据类型、运算符、...

    疯狂java实战讲义源码

    通过阅读和分析这些源码,你可以了解如何将Java语法、设计模式以及编程思想转化为实际运行的程序。这份源码集合涵盖了许多关键知识点: 1. **基础语法**:包括变量声明、数据类型、流程控制(if-else、switch、for...

    经典java实例源码

    这个"经典java实例源码"的压缩包很可能包含了各种各样的Java编程示例,旨在帮助初学者理解和掌握Java的核心概念和最佳实践。对于初学者来说,通过实例学习是最有效的途径之一,因为它能让理论知识变得更加生动和易于...

    Java电子相册源码.rar

    1. **Java基础**:Java电子相册源码的基础是Java编程语言,包括类、对象、继承、多态、封装等核心概念。开发者需要掌握Java的基本语法和编程思想。 2. **Swing库**:Java Swing是用于构建桌面应用程序的GUI工具包,...

    Thinking in java 第三版和第四版

    书中附带的源码是理解理论知识的关键,通过阅读和运行这些源代码,读者可以直观地看到Java编程的实际效果,从而加深对编程概念的理解。源码包含各种设计模式的实现,这对于提高软件设计能力非常有帮助。 "Thinking ...

    孙卫琴《Java面向对象编程》配套PPT及书中源码

    《Java面向对象编程》是孙卫琴先生撰写的一本深入探讨Java编程的著作,尤其注重面向对象的思想和实践。这本书的配套PPT和源码,为读者提供了丰富的学习资源,帮助理解和掌握Java语言的核心概念。 PPT部分,通常包含...

    140个Java源码实例

    "140个Java源码实例"是一份珍贵的学习资源,它包含了多个实际编程场景下的代码示例,旨在帮助初学者更好地理解和掌握Java编程。 在学习这140个Java源码实例时,我们可以按照以下主要知识点进行分类和深入学习: 1....

    框架源码 API JAVA

    在Java中,API包含了丰富的类库,如集合框架、IO流、网络编程、多线程等,这些都是构建应用程序的基础。 深入学习框架源码,我们需要了解以下几个关键知识点: 1. **设计模式**:大部分框架都采用了多种设计模式,...

    java程序设计教程源码

    Java程序设计教程源码是学习Java编程的重要参考资料,它包含了实际教学或自学过程中所讲解的各种示例代码,有助于深入理解Java语言的语法、结构和编程思想。这些源码通常覆盖了从基础到高级的各个主题,包括数据类型...

    JAVA达内上课源码

    源码是编程学习的重要组成部分,通过分析和研究源代码,学员可以深入理解编程思想、设计模式以及Java语言的特性和规范。 【描述】"JAVA达内上课源码JAVA达内上课源码JAVA达内上课源码" 重复的信息强调了这是关于...

    JAVA程序设计教程附源码

    【JAVA程序设计教程】是为初学者和有一定基础的学习者提供的深入理解Java编程语言的资源。这个教程可能包含了从基础语法到高级特性的全面讲解,旨在帮助读者掌握编写高效、可维护的Java程序的技能。 在Java编程中,...

    28个java常用的工具类源码

    了解并深入学习这些工具类的源码,对于提升编程技能、理解Java内部机制以及优化代码性能有着巨大的帮助。 首先,让我们逐一探讨这些工具类可能包括的内容: 1. **ArrayList和LinkedList**:这两个是Java集合框架中...

Global site tag (gtag.js) - Google Analytics