java.io.File 类的相关方法详细说明和部分测试代码

java.io.File 类

文件和目录路径名的抽象表示形式
java把电脑中的文件和文件夹封装成了一个File类,我们可以使用File类对文件和文件夹进行操作
File类是与系统无关的类,任何一个系统都可以使用它里面的方法

静态修饰符

----static String pathSeparator //路径分隔符,与系统相关的路径分隔符字符,为方便起见,表示为字符串。
—static char pathSeparatorChar //与系统相关的路径分隔符。
—static String separator //文件名称分隔符,与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。
—static char separatorChar //与系统相关的默认名称分隔符。
注:不同的操作系统pathSeparator和separator可能不同,所以路径名使用 “c:”+File.separator+“text” 的方式表示“c:\text”可以兼容不同操作系统

使用类名访问这几个修饰符,测试代码和运行结果如下:

public class text1 {
	public static void main(String[] args)  { 
		show1();
		}
static void show1() {
		//4个静态方法
		System.out.println(File.pathSeparator);
		System.out.println(File.pathSeparatorChar);
		System.out.println(File.separator);
		System.out.println(File.separatorChar);
	}
}

在这里插入图片描述

File 的构造方法

File(String pathname)

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

  • 参数接受一个字符串的路径名称,路径可以是以文件结尾也可以是以文件夹结尾,可以是相对路径也可以是绝对路径
    * 路径可以存在也可以不存在,创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况
	static void show2Constructor () {
		File file= new File("F:\\project\\dataStructuresAndAlgorithms\\a.txt");
		File file2= new File("a.txt");
		System.out.println(file2);
		System.out.println(file);
		
	}
File(String parent, String child)

File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。
* parent 父路径
* child 子路径
* 使用该方法 父路径和子路径可以单独书写,使用比较灵活,而且父路径和子路径都可以变化

	static void show3Constructor (String parent ,String child) {
		File file= new File(parent,child);
		System.out.println(file);
		
	}
File(File parent, String child)

File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。
* parent 父路径
* child 子路径
* 使用该方法 父路径和子路径可以单独书写,使用比较灵活,而且父路径和子路径都可以变化
* 父路径是File类型, 可以用File的方法对路径进行一些操作,再使用路径创建对象

	static void show4Constructor ( ) {
		File parent = new File("C:\\");
		File file = new File(parent,"hello.java"); 
		System.out.println(file);
		
	}

4个 “获取” 方法

— getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。无论构造方法中使用的是绝对路径还是相对路径,getAbsolutePath方法都返回绝对路径。
— getPath() 将此抽象路径名转换为路径名字符串。 getPath返回的是构造方法中的路径
—getName() 返回由此抽象路径名表示的文件或目录的名称。 getName返回路径的结尾部分
— length() 返回由此抽象路径名表示的文件的长度。 ength 以字节为单位返回文件大小,文件夹没有大小(返回0),如果路径不存在,返回0

	static void show1Modifier() { 
		
		File file= new File("F:\\project\\dataStructuresAndAlgorithms\\IODemo\\a.txt");
		System.out.println(file.getAbsolutePath());
		System.out.println(file.getPath());
		
		System.out.println(file.toString());//toString 方法调用的是getPath方法
		
		System.out.println(file.getName());
		
		File file2= new File("F:\\\\project\\\\dataStructuresAndAlgorithms\\\\IODemo\\\\.project");
		System.out.println(file.length());
		System.out.println(file2.length());
	}

判断功能的方法

—exists() 测试此抽象路径名表示的文件或目录是否存在,存在返回true,否则返回false。
—isDirectory() 测试此抽象路径名表示的文件是否为目录。
—isFile() 测试此抽象路径名表示的文件是否为普通文件。
* isDirectory和isFile方法是互斥的,不是目录就是普通文件,对不存在的文件路径,都返回false
—isHidden() 测试此抽象路径名命名的文件是否为隐藏文件。

	static void show2Modifier() {

		
		File file= new File("F:\\project\\dataStructuresAndAlgorithms\\IODemo\\a.txt");
		File file2= new File(".project");
		System.out.println(file.exists());
		System.out.println(file2.exists());
		
		
		System.out.println(file.isDirectory());
		System.out.println(file.isFile());
		System.out.println(file2.isDirectory());
		System.out.println(file2.isFile());
		
	}
	

创建和删除功能的方法

—createNewFile() 当且仅当具有该名称的文件尚不存在时,原地创建一个由该抽象路径名命名的新的空文件。
* 如果文件不存在,创建文件 ,返回true
* 如果文件存在,不创建文件,返回false
* 该方法只能创建文件不能创建文件夹
* 文件夹目录必须正确,否则会抛出异常
—delete() 删除由此抽象路径名表示的文件或目录。
* 删除构造方法中给出的路径表示的文件夹或文件
* 文件夹删除成功,返回true
* 文件夹有类容,不会删除,返回false,构造方法中路径不存在,返回false
* delete直接在硬盘上删除文件或文件夹,不会进入回收站
—mkdir() 创建由此抽象路径名命名的目录。
* 只能创建单级文件夹
* 文件夹存在,不创建,返回false
* 文件夹不存在,创建,返回true
—mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
* 可以创建单级空文件夹,也可以创建多级文件夹。

	static void show3Modifier() throws IOException {
	  
		File file = new File("F:\\\\project\\\\dataStructuresAndAlgorithms\\\\IODemo\\\\a.txt");
		System.out.println(file.createNewFile());
		File file2 = new File("F:\\\\project\\\\dataStructuresAndAlgorithms\\\\IODe\\\\a.txt");//故意将最后一个文件夹路径写错,
		System.out.println(file2.createNewFile());
		
	}

File类目录的遍历

— String[] list(FilenameFilter filter) 返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录。
*list获取给定目录中所有文件/文件夹的名称,把获取到的多个名称存放到String 数组中返回
—File[] listFiles() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
* 遍历给定目录中所有文件/文件夹,将文件/文件夹封装为File对象,存放到File数组中返回
*
* list和listFiles遍历的是构造方法中给出的路径
* 如果构造方法中给出目录路径不存在或者路径不是一个目录, 两个方法都将抛出空指针异常
* 隐蔽文件/文件夹也将被返回

	static void show4Modifier() {
		
		
		File file = new File("F:\\\\project\\\\dataStructuresAndAlgorithms\\\\IODemo");
		String[] fileNames = file.list();
		
		File[] files= file.listFiles();
		
		for(String filename: fileNames) {
			System.out.println(filename);
		}
		System.out.println("------------------------------");
		for(File resFile:files) {
			System.out.println(resFile.toString());
		}
	}

过滤器的使用

先写出一个用于遍历某个路径下所有文件/文件夹的方法:

	//练习,使用递归遍历文件夹中所有类容
	private static void getAllFile(File dir) {
		File[] files=dir.listFiles();
		for(File f: files) {
			if(f.isDirectory()) {
				getAllFile(f);
			}  
			System.out.println(f);
		}
		
	}

—File[] listFiles(FileFilter filter)
*返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录
* java.io.FileFilter接口:用于抽象路径名(File对象)的过滤器
* 作用:用于过滤File对象
* 该FileFilter接口中有一个抽象方法:boolean accept(File pathname)测试指定的抽象路径名是否应包含在路径名列表中。
* 参数File pathname是使用listFiles方法遍历路径得到的每一个File对象
—File[] listFiles(FilenameFilter filter)
* 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
* java.io.FilenameFilter接口:用于实现此接口的类的实例用于过滤文件名
* 作用:用于过滤文件名称
* boolean accept(File dir, String name) 测试指定文件是否应包含在文件列表中。
* File dir 构造方法中传递的被遍历的目录
* String name 使用listFiles遍历得到的每一个File的名称

FileFilter 文件过滤器的使用

//练习,过滤器FileFilter的使用,使用匿名类
				private static void getAllFile3(File dir) {
					//使用匿名类部类定义过滤规则
					File[] files=dir.listFiles(new FileFilter() {
						
						@Override
						public boolean accept(File pathname) {
							return pathname.isDirectory()||pathname.getName().toLowerCase().endsWith(".java");
						}
					});
					
					for(File f: files) {
						if(f.isDirectory()) {
							getAllFile(f);
						}else {
							System.out.println(f);					
						}
					}
					
				}

FilenameFilter 文件名过滤器的使用

//练习,过滤器FilenameFilter的使用,使用匿名类
				private static void getAllFile4(File dir) {
					//使用匿名类部类定义过滤规则
					File[] files=dir.listFiles(new FilenameFilter() {
						
						@Override
						public boolean accept(File dir,  String name) {
							return new File(dir,name).isDirectory()|| name.toLowerCase().endsWith(".java");
						}
					 
					});
					
					for(File f: files) {
						if(f.isDirectory()) {
							getAllFile(f);
						}else {
							System.out.println(f);					
						}
					}
					
				}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值