`

IO流复习(列出指定目录下的指定格式文件)

阅读更多
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++ 列出指定目录的所有文件夹和文件

    本文将详细介绍如何使用 C/C++ 编程语言实现一个简单的程序来遍历指定目录,并列出该目录下的所有子目录与文件。本示例代码适用于 Windows 平台,并使用了 `&lt;io.h&gt;` 和 `&lt;stdio.h&gt;` 头文件中的函数来进行文件系统的...

    IO流pdf宝典

    ### JAVA IO流概念及其应用详解 ...通过对以上知识点的学习,我们可以了解到JAVA IO流在处理文件和其他设备上的数据时的强大功能。掌握好这些基本概念和技巧,能够帮助开发者更好地处理各种数据操作需求。

    【公益知识库zscc.club】43-IO流(列出目录下所有内容-递归).avi

    【公益知识库zscc.club】43-IO流(列出目录下所有内容-递归).avi

    【公益知识库zscc.club】44-IO流(列出目录下所有内容-带层次).avi

    【公益知识库zscc.club】44-IO流(列出目录下所有内容-带层次).avi

    Java中文件IO流.pdf

    Java 中文件 IO 流 Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写操作。文件流是指在程序中用于文件输入输出的对象, Java 中提供了多种文件流类型,包括 InputStream ...

    IO流、Xml解析

    IO流还包括输入流(Input Stream)、输出流(Output Stream)、缓冲流(Buffered Stream)、转换流(Converter Stream)以及对象流(Object Stream)等子类,它们各自有不同的功能和应用场景。例如,FileInputStream...

    IO流修改目录下文件后缀工具类

    统一修改目录下文件后缀名,IO流的基本操作,递归遍历目录下所有文件,找到符合条件的后缀并修改

    列出目录中所有文件(含文件夹)

    3. **列出目录内容**:在命令行环境中,如Windows的CMD或Linux的Terminal,可以使用`dir`(Windows)或`ls`(Unix/Linux)命令来列出当前目录下的文件和子目录。加上 `-R` 或 `--recursive` 参数,可以递归列出所有...

    目录多文件上传-JAVA IO流常用详解

    ### 目录多文件上传-JAVA IO流常用详解 #### 概述 本文将详细介绍一个Java程序中的功能模块——如何实现目录多文件上传,并利用Java IO流进行文件复制操作。该功能可以实现在用户选择一个目录后,自动扫描并上传该...

    IO流读取和创建文件

    在Java编程语言中,输入/输出(IO)流是处理数据传输的核心机制,尤其是在读取和创建文件时。本文将详细讲解如何使用IO流来读取和创建文件,以及涉及的相关概念和技术。 首先,理解IO流的基本概念至关重要。IO流...

    通过IO流把文件传到前端并下载.zip

    "Content-Type"指定文件类型,"Content-Disposition"告诉浏览器如何处理数据,通常设置为"attachment",附带一个"filename"参数,指示文件名,这样浏览器会自动触发下载对话框。 4. **Spring框架**: 提到的`...

    获取指定目录下的文件列表 获取指定目录下的所有文件名和路径(包括子目录)

    在编程领域,尤其是在文件系统操作相关的任务中,获取指定目录下的所有文件名和路径是一项基本且重要的工作。这个过程通常涉及到文件系统遍历,能够帮助开发者处理文件、组织数据或者进行备份等操作。本篇文章将深入...

    网络IO流文件传递

    模拟网络通信IO流文件传递

    IO流 javaio java 流

    Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又...

    java 文件操作及IO流

    创建实例时需要指定文件路径,如`new FileOutputStream("file.txt")`。 - `write(int b)`方法用于写入单个字节,`write(byte[] b)`和`write(byte[] b, int off, int len)`用于写入字节数组的部分或全部。 3. **...

    java基础 IO流

    在创建`File`对象时,可以指定文件或目录的路径,这个路径可以是绝对路径,也可以是相对于当前项目目录的相对路径。通过`File`类,我们可以判断文件或目录是否存在,创建、删除文件或目录,获取文件的属性如绝对路径...

    java 使用IO流实现文件的复制

    这里我们以字节流为例,使用`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流主要负责在不同数据源之间进行数据的传输,包括从文件系统、网络、内存等地方读取数据,以及向这些地方写入数据。IO流被设计为双工通道,既可以进行输入操作,也可以进行输出操作。Java的IO流体系结构...

    Java-Io流,练习

    Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...

Global site tag (gtag.js) - Google Analytics