IO_commonsIO_常用核心操作

本文深入讲解了Java中文件和目录的操作方法,包括统计文件夹大小、列出子孙级文件、读取文件内容等实用技巧,同时介绍了如何使用过滤器筛选特定类型的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 统计文件夹大小

Modifier and TypeFunctionDescription
static longsizeOf(File file)返回指定文件或目录的大小.

Code:

public class CIOTest01 {
	public static void main(String[] args) {
		/*①文件大小*/
		long len = FileUtils.sizeOf(new File("a.jpg"));
		System.out.println(len);
		/*②目录大小*/
		len = FileUtils.sizeOf(new File("D:\\soft\\eclipse\\eclipse-workspace\\IO_study04\\lib"));
		System.out.println(len);
	}
}

Result:

27143
495622

2. 列出子孙级

Modifier and TypeFunction
public static CollectionlistFiles(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)

Description fileFilter—在查找文件时应用过滤器。必须不为空,使用TrueFileFilter。实例,以匹配选定目录中的所有文件。
dirFilter -可选的过滤器应用时,发现子目录。如果该参数为空,则搜索中将不包含子目录。使用TrueFileFilter。实例来匹配所有目录。

①第2个参数IOFileFilter fileFilter : EmptyFileFilter.NOT_EMPTY的作用1:可以过滤空文件
首先新建一个空文件empty.txt

Collection<File> files = FileUtils.listFiles(	
				new File("D:\\soft\\eclipse\\eclipse-workspace\\IO_study04"), 
				EmptyFileFilter.NOT_EMPTY,/*过滤器,选择NOT_EMPTY意思是把空文件过滤掉*/
				null);
		/*因为返回的是一个文件集,是一个容器。所以可以遍历*/
		for(File file:files) {
			System.out.println(file.getAbsolutePath());
		}

Result:

		D:\soft\eclipse\eclipse-workspace\IO_study04\.classpath
		D:\soft\eclipse\eclipse-workspace\IO_study04\.project

当empty.txt增加内容后,Result:

		D:\soft\eclipse\eclipse-workspace\IO_study04\.classpath
		D:\soft\eclipse\eclipse-workspace\IO_study04\.project
		D:\soft\eclipse\eclipse-workspace\IO_study04\empty.txt

②第3个参数IOFileFilter dirFilter : DirectoryFileFilter.INSTANCE的作用:查看子孙级

		/*默认只能查看一层*/
files = FileUtils.listFiles(	
				new File("D:\\soft\\eclipse\\eclipse-workspace\\IO_study04"), 
				EmptyFileFilter.NOT_EMPTY,
				DirectoryFileFilter.INSTANCE);
		/*因为返回的是一个文件集,是一个容器。所以可以遍历*/
		for(File file:files) {
		System.out.println(file.getAbsolutePath());
		}

Result:可以看到所有子孙级

		D:\soft\eclipse\eclipse-workspace\IO_study04\.classpath
		D:\soft\eclipse\eclipse-workspace\IO_study04\.project
		D:\soft\eclipse\eclipse-workspace\IO_study04\.settings\org.eclipse.jdt.core.prefs
		D:\soft\eclipse\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest01.class
		D:\soft\eclipse\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest2.class
		D:\soft\eclipse\eclipse-workspace\IO_study04\empty.txt
		D:\soft\eclipse\eclipse-workspace\IO_study04\lib\commons-io-2.6-sources.jar
		D:\soft\eclipse\eclipse-workspace\IO_study04\lib\commons-io-2.6.jar
		D:\soft\eclipse\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest01.java
		D:\soft\eclipse\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest2.java

③第2个参数IOFileFilter fileFilter : public SuffixFileFilter(final String suffix)的作用2:只看文件后缀是.java

files = FileUtils.listFiles(	
				new File("D:\\soft\\eclipse\\eclipse-workspace\\IO_study04"), 
				new SuffixFileFilter("java"),
				DirectoryFileFilter.INSTANCE);
		for(File file:files) {
		System.out.println(file.getAbsolutePath());
		}

Result:

		D:\soft\eclipse\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest01.java
		D:\soft\eclipse\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest2.java*/

④第2个参数IOFileFilter fileFilter : public static IOFileFilter or(final IOFileFilter... filters)的作用2:指定多种文件后缀

files = FileUtils.listFiles(	
				new File("D:\\soft\\eclipse\\eclipse-workspace\\IO_study04"), 
				FileFilterUtils.or(new SuffixFileFilter("java"),new SuffixFileFilter("class")) ,
				DirectoryFileFilter.INSTANCE);
		for(File file:files) {
		System.out.println(file.getAbsolutePath());
		}

Result:

		D:\soft\eclipse\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest01.class
		D:\soft\eclipse\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest2.class
		D:\soft\eclipse\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest01.java
		D:\soft\eclipse\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest2.java

3. 读取文件

public static void main(String[] args) throws IOException {
//		读取文件
		String msg = FileUtils.readFileToString(new File("empty.txt"), "UTF-8");
		System.out.println(msg);
		byte[] datas = FileUtils.readFileToByteArray(new File("empty.txt"));
		System.out.println(datas.length);
		System.out.println("***********************************************************");
//		逐行读取法一
		 List<String> msgs= FileUtils.readLines(new File("empty.txt"), "UTF-8");
		 for (String string : msgs) {
				System.out.println(string);
		}
		System.out.println("***********************************************************");
//		逐行读取法二
		 LineIterator it = FileUtils.lineIterator(new File("empty.txt"), "UTF-8");
		 while(it.hasNext()) {
			 System.out.println(it.nextLine());
		 }
	}

Result:

Don't forget, a person's greatest emotional need is to feel appreciated.
莫忘记,人类情感上最大的需要是感恩。
128
***********************************************************
Don't forget, a person's greatest emotional need is to feel appreciated.
莫忘记,人类情感上最大的需要是感恩。
***********************************************************
Don't forget, a person's greatest emotional need is to feel appreciated.
莫忘记,人类情感上最大的需要是感恩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值