JAVA-I/O流-概念File类和过滤器

JAVA-I/O流-概念File类和过滤器


Java中通过java.io及其子包中的中的类和接口来支持IO,主要包括输入(Input)、输出(Output)两种流,每种流又分成字节流和字符流两种。
Java的IO流使用的是装饰器设计模式,因此IO流又分为与底层物理节点关联的节点流和上层用以处理的处理流。

  • 流:java中吧不同的输入\输出源(文件、键盘、网络连接等)抽象为流(Stream)。
  • 字节流:以字节为单位进行处理的流。
  • 字符流:以字符为单位进行处理的流。
  • 方向:在JVM所在内存的角度考虑输入输出的方向。

File类

File类仅仅是一个目录,能够进行一些增删操作,但是不能访问文件,访问文件需要输入/输出流。

1.成员方法

pathSeparator 返回与系统有关的路径的分隔符字符串
pathSeparatorChar 返回与系统有关的路径的分隔符字符串
separator 返回与系统有关的默认名称分隔符字符串
separatorChar 返回与系统有关的默认名称分隔符字符串

2.构造方法

// 根据parent 抽象路径名和chi1d路径名字符串创建一个新File实例。
File(File parent, String child)

//  通过将给定路径名字符串转换为抽象路径名来创建一个新File 实例。
File(String pathname)

// 根据parent 路径字符串和child路径字符串创建一个新File实例
File(String parent, String child)

*** 直接使用字符串创建最好,如果有了父路径可以省事用另外两种方法。 ***

3. 方法

  • 文件名相关
String getName()    // 返回最低级目录名称或文件名称
String getAbsolutePath ()   // 返回绝对路径
String getPath ()   // 返回路径名字符串(原样输出)
{
    File file1 = new File("D:/io1227");
    File file2 = new File(".", "a.txt");
    file1.getName();    // io1227
    file1.getAbsoluteFile();    // D:\io1227
    file2.getPath();    // .\a.txt
}
long length()    // 返回文件长度
boolean renameTo(File newName)   // 更改文件或目录名
  • 增删操作:返回值全部为boolean
createNewFile()     // 创建新文件,文件不存在true,文件存在false
delete()    // 删除文件或目录
exists()    // 测试目录或文件是否存在
  • 其他方法
boolean isDirectory()   // 测试是否为目录
boolean isFile()    // 测试是否为文件
boolean mkdir()     // 创建目录(单级)
boolean mkdirs()    // 创建目录(多级)

FileNameFilter文件过滤器

FileFilter是一个接口,需要创建一个能够实现接口中accept方法的类,使用匿名对象直接传参进list()中即可

// 使用过滤器筛选出文本文档
list():public static void guolv(){
		File file = new File("D:/io1227");
		String[] strArr = file.list(new GetTxt());
		for (String s : strArr) {

			System.out.println(s);
		}
		File[] fi = file.listFiles(new GetTxt());
		for (File s : fi) {
			
			System.out.println(s);
		}
	}
// 过滤器实现类
public class GetTxt implements FilenameFilter{
	@Override
	public boolean accept(File dir, String name) {	
		return name.toLowerCase().endsWith("txt");
	}	
}
posted @ 2020-04-23 14:39  于大宝执剑江湖  阅读(166)  评论(0)    收藏  举报