I/O框架
1. 流的概念
-
/**
* 1: java.io 包下。
* 2:i:input o:output
* 3:流(stream)
* 4:通过流:可以对文件实现读写操作。网络传输。
* 5:流的分类:
* 1:通过数据的流向
* 输入流:将外部的数据流向程序内存。InputStream、
* 输出流:将内存中数据写出到目的地。OutputStream
* 2:通过处理的数据的单元
* 字节流,以字节为单位来处理数据。能处理所有的数据。 FileInputStream
* 字符流,以字符为单位处理数据。只能处理字符数据。但是底层还是字节流。FileReader
* 字节流的功能更加的强大。
* 字符流 处理字符数据 更加的简单,专业。
*
* 3:根据数据源不同分类
* 节点流:直接和数据源相连的流。FileInputStream
* 处理流:以其他的流为数据源的流。效率功能一般比节点流更强。BufferedInputStream。
*
*/ -
3. File/FileFilter
package com.qf.io;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Arrays;
/**
* java.io.File
* 1: 一个File对象 可以代表你磁盘上的一个文件,或者是一个目录。
* 2:通过File 对象,可以实现创建文件,创建目录,修改文件的属性,重命名文件。
* 不能读取和修改文件的内容。
*
*/
public class TestFile {
public static void main(String[] args) {
// couterFiles(new File("D:/java/3.文档资料"));
// deleteDir(new File("d:/77"));
test4();
}
// 思考:如何删除一个目录:只能删除文件和空目录。
private static void deleteDir(File delFile){
if(delFile.isFile()){
// 删除文件。
delFile.delete();
}else{
File[] files = delFile.listFiles();
for (int i = 0; i < files.length; i++) {
deleteDir(files[i]);
}
// 删除空目录。
delFile.delete();
}
}
// 获取到一个目录下的所有的满足某些规则的文件的名字
private static void test4(){
File file = new File("C:\\Program Files\\Java\\jdk1.8.0_161\\bin");
// 获取目录中,满足过滤器要求的内容。
File[] files = file.listFiles(new FileFilter(){
// 使用 accept 对所有的子文件进行过滤,如果返回true,代表满足需求。