`

java编程思想笔记(十一)文件和目录的操作

 
阅读更多

1.文件目录的List操作:

Java中,File类其实代表文件的路径,它既可以代表一个特定文件的文件,也可以代表一个包含多个文件的目录名称。如果File代表目录,可以使用List列出目录中文件。

import  java.util.regex.*;  
import  java.io.*;  
import  java.util.*;  
public class DirList{  
    public static void main(String[] args){  
        //当前目录  
        File path = new File(“.”);  
        String[] list;  
        //如果没有指定参数,则将目录中文件全部列出  
        if(args.length == 0){  
    list = path.list();  
}  
//指定了参数,则根据指定文件名过滤符合条件的文件  
else{  
    list = path.list(new DirFilter(args[0]));  
}  
Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);  
for(String dirItem : list){  
    System.out.println(dirItem);  
}  
}  
}  
class DirFilter implements FilenameFilter{  
    private Pattern pattern;  
    public DirFilter(String regex){  
        //将输入的命令行参数编译为正则表达式的模式串  
        pattern = Pattern.compile(regex);  
}  
//File的List方法回调方法  
public boolean accept(File dir, String name){  
    //使用正则表达式匹配给定目录下的文件名  
    return pattern.matcher(name).matches();  
}   
}  

 

 

命令行输入参数:“*\.java”

输出结果如下:

DirFilter.java

DirList.java

 

 

 

2.java中除了File类可以表示文件的路径外,还可以表示目录的路径,可以通过File的isDirectory判断File对象是一个文件还是一个目录。

如下的例子通过local()方法列出给定目录中符合条件的文件/目录名称,walk()方法遍历给定的目录:

import java.util.regex.*;  
import java.io.*;  
import java.util.*;  
  
public final class Directory{  
    //列出目录中符合条件的文件名  
    public static File[] local(File dir, final String regex){  
        return dir.listFiles(new FilenameFilter(){  
            private Pattern pattern = Pattern.compile(regex);  
            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>();  
    //默认的迭代器方法,跌倒文件树元素对象  
    public Iterator<File> iterator(){  
        return files.iterator();  
}   
void addAll(TreeInfo other){  
    files.addAll(other.files);  
    dirs.addAll(other.dirs);  
}  
public String toString(){  
    return “dirs: ” + dirs + “\n\nfiles: ” + 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;  
}  
}

这里的关键方法:

File的listFiles()方法,可以得到当前File目录下的所有文件或目录的File。 

 

 

3.文件和目录的其他操作:

文件和目录除了常规的查找和遍历操作意外,还有很多其他的操作,例如:创建、删除、判断文件/目录是否已存在,获取文件/目录的绝对路径,获取文件/目录的权限等等,下面的小例子就展示文件/目录的这些操作:

import java.io.*;  
public class MakeDirectories{  
    //获取文件/目录的基本信息  
private static void fileData(File f){  
        System.out.println(  
    “Absolute path: ” + f.getAbsolutePath() +  
    “\n Can read: ” + f.canRead() +  
    “\n Can write: ” + f.canWrite() +  
    “\n getName: ” + f.getName() +   
    “\n getParent: ” + f.getParent() +  
    “\n getPath: ” + f.getPath() +  
    “\n length: ” + f.length() +  
    “\n lastModified: ” + f.lastModifed());  
if(f.isFile()){  
    System.out.println(f.getName() + “ is a file”);  
}  
else if(f.isDirectory()){  
System.out.println(f.getName() + “ is a directory”);  
}  
}  
public static void main(String[] args){  
    File old = new File(“oldFile”);  
    File new = new File(“newFile”);  
    old.renameTo(new);  
    fileData(old);  
    fileData(new);  
    File d = new File(“/test”);  
    if(d.exists()){  
    System.out.println(“Deleting …” + d);  
    d.delete();  
}  
else {  
    System.out.prinln(“Creating…” + d);  
    d.mkdirs();  
}  
}  
}  

 

 

分享到:
评论

相关推荐

    java编程思想读书笔记

    ### Java编程思想读书笔记 #### 一、Java与C++的区别及内存管理 在学习Java的过程中,我们常常会拿它与C++进行比较。这两门语言虽然有着相似之处,但也有许多不同点。 1. **内存管理:** - C++提供了更为底层的...

    Java编程思想笔记(全)

    ### Java编程思想笔记知识点概述 #### 第 1 章 对象导论 在这一章节中,主要介绍...以上内容概括了《Java编程思想笔记》中的核心知识点,涵盖了Java语言的基础到高级特性,适合初学者和有一定经验的开发者参考学习。

    Java编程思想学习笔记

    在讨论Java编程思想学习笔记时,首先需要了解的是Java语言的平台无关性,而这一特性正是通过Java虚拟机(JVM)得以实现的。JVM作为Java程序设计的关键组成部分,对于Java开发人员来说是必须掌握的基础知识。在该学习...

    java编程思想读书笔记.rar

    《Java编程思想》是 Bruce Eckel 的经典之作,这本书深入浅出地介绍了Java语言的核心概念和技术,对于初学者和有经验的程序员来说都是极好的学习资源。以下是对书中的主要知识点进行的详细解读: 1. **Java语言基础...

    Java编程思想重点笔记(Java开发必看).pdf

    以上只是Java编程思想笔记中的冰山一角,深入学习还包括网络编程、数据库连接、JVM内存模型、垃圾回收机制、并发编程高级话题、Spring框架等内容。这些知识点构成了Java开发者必备的基础知识体系,通过不断学习和...

    非常好的java笔记适合初学者

    总的来说,这份"非常好的java笔记"是初学者学习Java编程的理想教材,它将引导读者逐步掌握编程基础,理解面向对象编程思想,以及熟悉Java特性和库的使用。通过系统的阅读和实践,初学者能够建立起坚实的Java编程基础...

    达内JAVA培训综合笔记

    整个达内JAVA培训综合笔记内容丰富、全面,对于Java编程的各个方面都有详尽的阐述,从基础语法到面向对象的思想,再到JavaSE核心I和II的深入学习,最后涵盖了Oracle数据库及其SQL语句的应用。这份笔记对于Java初学者...

    达内Java_笔记整理.rar_Java 达内笔记_Java笔记_java 笔记_笔记_达内

    面向对象编程思想是Java的灵魂,它使得代码更易于理解和维护。 接着,文件I/O、异常处理和集合框架也是Java的重要部分。这部分笔记可能涉及File类、IOException、try-catch-finally语句以及ArrayList、LinkedList、...

    大佬的java笔记

    由于提供的文件内容中,...如果要学习Java,最好的方式是从学习Java的基础语法和面向对象编程思想入手,逐步深入到类库使用和Java高级特性,同时实践相关的设计模式和架构设计,这样可以更全面地掌握Java编程的精髓。

    java学习笔记(全)

    Java学习笔记全集是针对Java编程语言的一份详尽的学习资料,它涵盖了从基础到进阶的各个层面,旨在帮助初学者系统地学习Java,并为有一定经验的开发者提供复习和巩固知识的平台。这份笔记主要关注Java语言的核心概念...

    JAVA学习笔记

    JAVA学习笔记是一个全面涵盖JAVA编程基础到进阶的资源集合,特别适合初学者掌握JAVA语言和项目开发技术。笔记内容包括了几个核心领域,如编程思想、多线程设计模式、网络编程,以及JAVA的新输入/输出(NIO)系统。 ...

    JAVA经典教材笔记

    - Java作为一种广泛使用的编程语言,其学习路径包括掌握基本语法、理解面向对象编程思想、熟悉标准库使用等。 - **JAVA发展概述** - Java的发展历程:从1995年由Sun Microsystems公司发布以来,Java经历了多次重大...

    java基础整理笔记超详细

    学习Java不仅能够掌握一门强大的编程工具,还可以了解到计算机语言的发展历程和面向对象编程的思想。通过深入理解Java的基础,开发者可以构建各种复杂系统,包括桌面应用、Web应用、移动应用以及分布式系统。

    手机游戏编程学习笔记Ⅰ(2013)word文件

    【Android游戏编程学习笔记概述...总结起来,这篇学习笔记详细记录了作者初次接触Android游戏开发的过程,包括了必要的环境配置和初步的编程思想,对于想要踏入Android游戏开发领域的新手来说,是一份宝贵的参考材料。

    北京达内科技java培训笔记

    "北京达内科技java培训笔记"提供的内容将覆盖以上诸多方面,对于初学者而言,通过这些笔记可以系统地学习Java编程,掌握其核心概念和技术,逐步成长为熟练的Java开发者。同时,不断更新和深化知识,紧跟技术发展潮流...

    B站java狂神说笔记

    这份笔记的PDF版本详细讲解了Java的基础概念、进阶特性和实战应用,旨在帮助读者全面理解和掌握Java编程。 一、Java基础 Java基础部分包括了Java环境的搭建、基本语法、数据类型、控制结构(如if语句、switch语句、...

    Java JDK 6学习笔记——ppt简体版

    Java JDK 6学习笔记是为Java初学者量身定制的一份宝贵资料,它涵盖了Java编程的基础概念、语法以及...通过详细阅读和反复实践,初学者可以逐步提高编程技能,理解Java编程的核心思想,从而在软件开发的世界里游刃有余。

Global site tag (gtag.js) - Google Analytics