File中list方法&listFiles方法

File中list方法&listFiles方法

1.list方法

1.无参的方法list()

返回类型:字符串数组
功能:返回一个文件夹下的一级子目录和文件名,不带父级目录的名称
代码块:

	 File file1 = new File("D:\\0XYZ");
	 String [] str = file1.list();
	 
	 List li = Arrays.asList(str);
	 System.out.println(li);
 

2.有参的方法list(FilenameFilter filter)

参数:过滤器FilenameFilter 接口类型,需要匿名或者对类实现
返回类型:字符串数组
功能:通过过滤器过滤该文件夹下的文件和文件夹
代码块:
返回文件夹下以.docx结尾的文件名的字符串数组

	File file1 = new File("D:\\0XYZ");
	File file = new File(".doc");
	String [] str = file1.list(new FilenameFilter() {
	    @Override
	    public boolean accept(File dir, String name) {
	        return name.endsWith(".docx");
	    }
	});
	
	List li = Arrays.asList(str);
	System.out.println(li);

2.listFiles方法

1.无参的方法listFiles()

返回类型:File数组
功能:返回一个File类型的数组,数组中存放的是此文件夹下的文件路径+文件名(包含父级目录的完整路径)
代码块:

		File file1 = new File("D:\\0XYZ\\Computer");
		File [] files = file1.listFiles();
		
		List li = Arrays.asList(files);
		System.out.println(li);

2.有参的方法listFiles(FilenameFilter filter)

参数:过滤器FilenameFilter 接口类型,需要匿名或者对类实现
返回类型:File类型数组
功能:通过过滤器过滤该文件夹下的文件和文件夹,返回文件夹+文件名的file类型
代码块:
返回文件夹下以.docx结尾的文件名的File类型数组

		File file1 = new File("D:\\0XYZ");
		
		File [] files = file1.listFiles(new FilenameFilter() {
		    @Override
		    public boolean accept(File dir, String name) {
		        return name.endsWith(".docx");
		    }
		});
		
		List li = Arrays.asList(files);
		System.out.println(li);

3.潜在问题

在使用有参数的方法时,File 相当于传入的文件夹的文件路径,name相当于文件下的所有文件名和文件夹的名称,在进行比较时,因为name是String,所以不能使用==,而使用equals方法,
实际案例:
获取文件夹下与 文件夹相同名称的文件夹名
正确的写法:

		File file1 = new File("D:\\0XYZ");
		
		String [] str = file1.list(new FilenameFilter() {
		@Override
		public boolean accept(File dir, String name) {
		    System.out.println(dir.getName());
		    boolean b = dir.getName().equals(name);
		    return dir.getName().equals(name);
		}
		});
		List li = Arrays.asList(str);
		System.out.println(li);

错误的写法:

		File file1 = new File("D:\\0XYZ");
		
		String [] str = file1.list(new FilenameFilter() {
		@Override
		public boolean accept(File dir, String name) {
		    System.out.println(dir.getName());
		    boolean b = dir.getName().equals(name);
		    return dir.getName()==name;
		}
		});
		List li = Arrays.asList(str);
		System.out.println(li);

你可能感兴趣的:(#,java基础,java)