10.3 CommonsIO

本文详细介绍Java IO流的应用,包括文件和目录的大小测量、目录及其子孙级文件的遍历、文件内容的读写、文件及目录的拷贝等实用操作。通过具体代码示例,深入解析IO流的使用技巧。

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

首先老师带我们了解了一下网站链接: link,计算机的权威网站
第一段代码讲:文件/目录的大小

package com.sxt.commons;

import java.io.File;

import org.apache.commons.io.FileUtils;

/**
 * 大小
 * @author 韩文韬
 *
 */
public class CIOTest01 {
	public static void main(String[] args) {
		//文件大小
		long len=FileUtils.sizeOf(new File("src/com/sxt/commons/CIOTest01.java"));
		System.out.println(len);
		//目录大小
		len=FileUtils.sizeOf(new File("C:/Users/韩文韬/eclipse-workspace/IO_study04"));
		System.out.println(len);
	}
}

输出结果为:
474
1138181
表示第一个java文件大小474个字节,第二个目录为1138181个字节;
第二段代码用各种命令列出目录的子孙级:

package com.sxt.commons;

import java.io.File;
import java.util.Collection;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.EmptyFileFilter;
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.SuffixFileFilter;

/**
 * 列出子孙级
 * @author 韩文韬
 *
 */
public class CIOTest02 {
	public static void main(String[] args) {
		Collection<File> files=FileUtils.listFiles(new File("C:/Users/韩文韬/eclipse-workspace/IO_study04"), EmptyFileFilter.NOT_EMPTY, null);
		for(File file:files)
		{
			System.out.println(file.getAbsolutePath());
		}
		System.out.println("######################");
		files=FileUtils.listFiles(new File("C:/Users/韩文韬/eclipse-workspace/IO_study04"), EmptyFileFilter.NOT_EMPTY, DirectoryFileFilter.INSTANCE);
		for(File file:files)
		{
			System.out.println(file.getAbsolutePath());
		}
		System.out.println("######################");
		files=FileUtils.listFiles(new File("C:/Users/韩文韬/eclipse-workspace/IO_study04"), new SuffixFileFilter("java"), DirectoryFileFilter.INSTANCE);
		for(File file:files)
		{
			System.out.println(file.getAbsolutePath());
		}
		System.out.println("######################");
		files=FileUtils.listFiles(new File("C:/Users/韩文韬/eclipse-workspace/IO_study04"), FileFilterUtils.or(new SuffixFileFilter("java"),new SuffixFileFilter("class")), DirectoryFileFilter.INSTANCE);
		for(File file:files)
		{
			System.out.println(file.getAbsolutePath());
		}
		System.out.println("######################");
		files=FileUtils.listFiles(new File("C:/Users/韩文韬/eclipse-workspace/IO_study04"), FileFilterUtils.or(new SuffixFileFilter("java"),new SuffixFileFilter("class"),EmptyFileFilter.EMPTY), DirectoryFileFilter.INSTANCE);
		for(File file:files)
		{
			System.out.println(file.getAbsolutePath());
		}
		System.out.println("######################");
		files=FileUtils.listFiles(new File("C:/Users/韩文韬/eclipse-workspace/IO_study04"), FileFilterUtils.and(new SuffixFileFilter("java"),EmptyFileFilter.NOT_EMPTY), DirectoryFileFilter.INSTANCE);
		for(File file:files)
		{
			System.out.println(file.getAbsolutePath());
		}
	}
}

输出结果为:

C:\Users\韩文韬\eclipse-workspace\IO_study04\.classpath
C:\Users\韩文韬\eclipse-workspace\IO_study04\.project
C:\Users\韩文韬\eclipse-workspace\IO_study04\han.txt
C:\Users\韩文韬\eclipse-workspace\IO_study04\huawen.txt
C:\Users\韩文韬\eclipse-workspace\IO_study04\p-copy.png
C:\Users\韩文韬\eclipse-workspace\IO_study04\p.png
C:\Users\韩文韬\eclipse-workspace\IO_study04\wen.txt
######################
C:\Users\韩文韬\eclipse-workspace\IO_study04\.classpath
C:\Users\韩文韬\eclipse-workspace\IO_study04\.project
C:\Users\韩文韬\eclipse-workspace\IO_study04\.settings\org.eclipse.core.resources.prefs
C:\Users\韩文韬\eclipse-workspace\IO_study04\.settings\org.eclipse.jdt.core.prefs
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest01.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest02.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest03.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest04.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest05.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\han.txt
C:\Users\韩文韬\eclipse-workspace\IO_study04\huawen.txt
C:\Users\韩文韬\eclipse-workspace\IO_study04\lib\commons-io-2.6-sources.jar
C:\Users\韩文韬\eclipse-workspace\IO_study04\lib\commons-io-2.6.jar
C:\Users\韩文韬\eclipse-workspace\IO_study04\lib\p.png
C:\Users\韩文韬\eclipse-workspace\IO_study04\lib2\commons-io-2.6-sources.jar
C:\Users\韩文韬\eclipse-workspace\IO_study04\lib2\commons-io-2.6.jar
C:\Users\韩文韬\eclipse-workspace\IO_study04\lib2\p.png
C:\Users\韩文韬\eclipse-workspace\IO_study04\p-copy.png
C:\Users\韩文韬\eclipse-workspace\IO_study04\p.png
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest01.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest02.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest03.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest04.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest05.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\wen.txt
######################
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest01.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest02.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest03.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest04.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest05.java
######################
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest01.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest02.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest03.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest04.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest05.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest01.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest02.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest03.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest04.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest05.java
######################
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest01.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest02.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest03.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest04.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\bin\com\sxt\commons\CIOTest05.class
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest01.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest02.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest03.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest04.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest05.java
######################
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest01.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest02.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest03.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest04.java
C:\Users\韩文韬\eclipse-workspace\IO_study04\src\com\sxt\commons\CIOTest05.java

第三段代码为读取其内容:

package com.sxt.commons;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;

/**
 * 读取内容
 * @author 韩文韬
 *
 */
public class CIOTest03 {
	public static void main(String[] args) throws IOException {
		//读取文件
		String msg=FileUtils.readFileToString(new File("han.txt"),"UTF-8");
		System.out.println(msg);
		
		//读到字节数组中
		byte[] datas=FileUtils.readFileToByteArray(new File("han.txt"));
		System.out.println(datas.length);
		
		//逐行读取
		List<String> msgs=FileUtils.readLines(new File("han.txt"),"UTF-8");
		for(String string:msgs)
		{
			System.out.println(string);
		}
		//迭代器
		LineIterator it=FileUtils.lineIterator(new File("han.txt"),"UTF-8");
		while(it.hasNext())
		{
			System.out.println(it.nextLine());
		}
	}
}

输出结果为:
君问归期未有期
巴山夜雨涨秋池
何日共剪西窗烛
却话巴山夜雨时
90
君问归期未有期
巴山夜雨涨秋池
何日共剪西窗烛
却话巴山夜雨时
君问归期未有期
巴山夜雨涨秋池
何日共剪西窗烛
却话巴山夜雨时
第四段代码为写出内容:

package com.sxt.commons;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.FileUtils;

/**
 * 写出内容
 * @author 韩文韬
 *
 */
public class CIOTest04 {
	public static void main(String[] args) throws IOException {
		//写出文件
		FileUtils.write(new File("wen.txt"), "温故而知新\r\n","UTF-8");
		FileUtils.writeStringToFile(new File("wen.txt"), "可以为师矣\r\n","UTF-8",true);
		//操作字节数组
		FileUtils.writeByteArrayToFile(new File("wen.txt"), "君不见高堂明镜悲白发\r\n".getBytes("UTF-8"),true);
		
		//写出列表
		List<String> datas=new ArrayList<String>();
		datas.add("王维");
		datas.add("李商隐");
		datas.add("李白");
		
		FileUtils.writeLines(new File("wen.txt"), datas,"--",true);
		
	}
}

第五段代码为拷贝过程:

package com.sxt.commons;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

/**
 * 拷贝
 * @author 韩文韬
 *
 */
public class CIOTest05 {
	public static void main(String[] args) throws IOException {
		//复制文件
		//FileUtils.copyFile(new File("p.png"), new File("p-copy.png"));
		//复制文件到目录
		//FileUtils.copyFileToDirectory(new File("p.png"), new File("lib"));
		//复制目录到目录 成为子目录
		//FileUtils.copyDirectoryToDirectory(new File("lib"), new File("lib2"));
		//复制目录
		//FileUtils.copyDirectory(new File("lib"), new File("lib2"));
		//拷贝URL内容
		//FileUtils.copyURLToFile(new URL("http://career.huawei.com/reccampportal/portal5/index.html#campus4/content.html"), new File("huawen.txt"));
		String datas=IOUtils.toString(new URL("http://career.huawei.com/reccampportal/portal5/index.html#campus4/content.html"),"UTF-8");
		System.out.println(datas);
	}
}

至此:IO流结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值