import java.io.*;
import java.util.*;
public class DirList3 {
public static void main(String[] args) {
File path = new File(".");
//存放文件名数组的list
ArrayList<String> fStr = new ArrayList<String>();
//存放目录的List
ArrayList<File> fls = new ArrayList<File>();
//文件过滤器,主要是列出指定目录下的所有文件包括其子目录下的所有文件,并列出符合表达式的文件名
FileFilter ff = new FileFilter(args[0]);
//列出所有目录,并将其添加到fls中
ff.listAllDir(path, fls);
File f = null;
String[] list = null;
for(Iterator<File> iter = fls.iterator(); iter.hasNext(); ) {
f = iter.next();
list = f.list(ff);
if(list.length != 0)
fStr.addAll(Arrays.asList(list));
}
//列出所有符合的文件名
System.out.println(Arrays.toString(fStr.toArray(new String[fStr.size()]))); }
}
FileFilter类
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.regex.Pattern;
public class FileFilter implements FilenameFilter {
private Pattern pattern;
public FileFilter(String regex) {
pattern = Pattern.compile(regex);
}
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return pattern.matcher(name).matches();
}
public void listAllDir(File dir, ArrayList<File> fls) {
File[] fs = dir.listFiles();
for(File item:fs) {
if(item.isDirectory()) {
fls.add(item);
listAllDir(item, fls);
}
}
fls.add(dir);
}
}
这段时间也没啥事做,于是就将编程思想翻开看看。小研究下IO,以上是书中的练习,主要是用到了FilenameFilter接口过滤文件名。其中FileFilter类实现了FilenameFilter接口。在调用File.list(filenameFilter)时查看了下jdk的源代码:如下
public String[] list(FilenameFilter filter) {
String names[] = 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()]));
}
可以看到是将指定file对象下的文件名一一与指定的格式比较,filter中的方法需要自己实现。
有啥不对之处,忘各位指正。欢迎交流。
分享到:
相关推荐
本文将详细介绍如何使用 C/C++ 编程语言实现一个简单的程序来遍历指定目录,并列出该目录下的所有子目录与文件。本示例代码适用于 Windows 平台,并使用了 `<io.h>` 和 `<stdio.h>` 头文件中的函数来进行文件系统的...
### JAVA IO流概念及其应用详解 ...通过对以上知识点的学习,我们可以了解到JAVA IO流在处理文件和其他设备上的数据时的强大功能。掌握好这些基本概念和技巧,能够帮助开发者更好地处理各种数据操作需求。
【公益知识库zscc.club】43-IO流(列出目录下所有内容-递归).avi
【公益知识库zscc.club】44-IO流(列出目录下所有内容-带层次).avi
Java 中文件 IO 流 Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写操作。文件流是指在程序中用于文件输入输出的对象, Java 中提供了多种文件流类型,包括 InputStream ...
IO流还包括输入流(Input Stream)、输出流(Output Stream)、缓冲流(Buffered Stream)、转换流(Converter Stream)以及对象流(Object Stream)等子类,它们各自有不同的功能和应用场景。例如,FileInputStream...
统一修改目录下文件后缀名,IO流的基本操作,递归遍历目录下所有文件,找到符合条件的后缀并修改
3. **列出目录内容**:在命令行环境中,如Windows的CMD或Linux的Terminal,可以使用`dir`(Windows)或`ls`(Unix/Linux)命令来列出当前目录下的文件和子目录。加上 `-R` 或 `--recursive` 参数,可以递归列出所有...
### 目录多文件上传-JAVA IO流常用详解 #### 概述 本文将详细介绍一个Java程序中的功能模块——如何实现目录多文件上传,并利用Java IO流进行文件复制操作。该功能可以实现在用户选择一个目录后,自动扫描并上传该...
在Java编程语言中,输入/输出(IO)流是处理数据传输的核心机制,尤其是在读取和创建文件时。本文将详细讲解如何使用IO流来读取和创建文件,以及涉及的相关概念和技术。 首先,理解IO流的基本概念至关重要。IO流...
"Content-Type"指定文件类型,"Content-Disposition"告诉浏览器如何处理数据,通常设置为"attachment",附带一个"filename"参数,指示文件名,这样浏览器会自动触发下载对话框。 4. **Spring框架**: 提到的`...
在编程领域,尤其是在文件系统操作相关的任务中,获取指定目录下的所有文件名和路径是一项基本且重要的工作。这个过程通常涉及到文件系统遍历,能够帮助开发者处理文件、组织数据或者进行备份等操作。本篇文章将深入...
模拟网络通信IO流文件传递
Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又...
创建实例时需要指定文件路径,如`new FileOutputStream("file.txt")`。 - `write(int b)`方法用于写入单个字节,`write(byte[] b)`和`write(byte[] b, int off, int len)`用于写入字节数组的部分或全部。 3. **...
在创建`File`对象时,可以指定文件或目录的路径,这个路径可以是绝对路径,也可以是相对于当前项目目录的相对路径。通过`File`类,我们可以判断文件或目录是否存在,创建、删除文件或目录,获取文件的属性如绝对路径...
这里我们以字节流为例,使用`java.io.FileInputStream`作为读取源文件的输入流,`java.io.FileOutputStream`作为写入目标文件的输出流。 下面是一个简单的文件复制示例: ```java import java.io.*; public class...
java新IO文件流java新IO文件流java新IO文件流java新IO文件流java新IO文件流java新IO文件流java新IO文件流
Java中的IO流主要负责在不同数据源之间进行数据的传输,包括从文件系统、网络、内存等地方读取数据,以及向这些地方写入数据。IO流被设计为双工通道,既可以进行输入操作,也可以进行输出操作。Java的IO流体系结构...
Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...