File类的个人总结

路径

  • 绝对路径:是一个完整的路径,比如 c:\user\a.txt
  • 相对路径: 是一个简化的路径

**注意:1.路径是不区分大小写的
2.路径中的文件名称分隔符windows使用反斜杠(\),反斜杠又是转义字符,所以两个反斜杠代表一个普通的反斜杠,程序中可以用File.separator 来代替 **

File类

1. 构造方法:

构造方法
1.1.File(String pathname)

通过将给定的路径名的字符串转换成一个抽象路径名创建一个新的 File实例。
注意:
pathname,字符串的路径名称;
路径可以是以文件结尾,也可以是以文件夹结尾;
路径可以是绝对路径,也可以是相对路径;
路径可以是存在的,也可以是不存在的;
创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况

public static void main(String[] args) {
		//String s = File.separator;
		File file = new File("D:\\java\\workspace_pra\\Exception_1031");
		System.out.println(file);  //打印出了路径名,说明重写了Object的toString方法
		
		File file2 = new File("D:\\java\\workspace_pra\\Exception_1031\\a.txt");
		System.out.println(file2);
		
		File file3 = new File("a.txt");
		System.out.println(file3);
	}

在这里插入图片描述
1.2 File(String parent, String child)
创建从父路径名的字符串和一个孩子的一个新的 File实例文件。
注意:
把路径分成了两部分:父路径和子路径;
这样好处就是,父路径和子路径可以单独书写,使用灵活多变

    public static void main(String[] args) {
		test02("c:","a.txt");
	}
	public static void test02(String parentPath,String childPath){
		File file = new File(parentPath,childPath);
		System.out.println(file);
	}

在这里插入图片描述

2.常用的方法

2.1获取功能的方法

在这里插入图片描述
注意:length()方法中,当文件路径不存在时,返回为0;当路径是文件夹时,返回值是不确定的

2.2判断功能的方法
  • public boolean exists() :检查文件或目录是否存在这种抽象路径名记。

  • public boolean isDirectory() 此File是否是一个目录。

  • public boolean isFile() 此File是否是一个文件。

2.3 创建和删除功能

在这里插入图片描述

注意:
a. createNewFile()方法只能创建文件,不能创建目录,而且路径找不到会抛出异常,即“系统找不到指定的路径”。
b. delete()方法可以删除目录或者文件,但删除目录时,该目录不能有内容;当文件不存在或者目录下有内容时,删除失败,返回false;
删除是指彻底删除,没有放在回收站,删除需谨慎

2.4 目录的遍历
  • public String[] list()
    返回一个String数组,表示该File目录中所有子文件或者目录的路径名。
  • public File[] listFiles()
    返回一个File数组,表示该File目录中所有的子文件或者目录 。
2.5文件过滤器实现(文件搜索)
  • public File[] listFiles(FilenameFilter filter)
  • public File[] listFiles(FileFilter filter)

实现一:listFiles()递归

package com.chw.file;

import java.io.File;

public class FileFilter {
	public static void main(String[] args) {
		File file = new File("D:\\java\\workspace_pra");
		//getAllFile(file);
		getAllFileByName(file, "add");
	}
	
	public static void getAllFile(File file){
		
		File[] files = file.listFiles();
		for(int i=0;i<files.length;i++){
		   if(files[i].isDirectory()){
			   getAllFile(files[i]);
		   }else{
			   System.out.println(files[i]);
		   }
		}
	}
	
    public static void getAllFileByName(File file,String name){
		
		File[] files = file.listFiles();
		for(int i=0;i<files.length;i++){
		   if(files[i].isDirectory()){
			   getAllFileByName(files[i],name);
		   }else if(files[i].getName().toLowerCase().indexOf(name.toLowerCase())>-1){
			   System.out.println(files[i]);
		   }
		}
	}

}

实现二:使用listFiles的重载方法listFiles(FileFilter filter)

package com.chw.file;

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;

public class FileFilter2 {
	public static void main(String[] args) {
		findAllFileByName(new File("D:\\java\\workspace_pra"),".java");
	}

	private static void findAllFileByName(File file, final String name) {
		
		File[] fs = file.listFiles(new FileFilter(){
			@Override
			public boolean accept(File f) {
				return f.isDirectory()||f.getName().toLowerCase().contains(name.toLowerCase());
			}
		});
		for(int i=0;i<fs.length;i++){
			if(fs[i].isDirectory()){
				findAllFileByName(fs[i], name);
			}else {
				System.out.println(fs[i]);
			}
		}
	}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值