IO--File类

本文详细介绍了Java中File类的基本概念、创建与删除功能、获取功能、判断功能等,并通过实例展示了如何使用File类来操作文件和目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

File类

文件和目录路径名的抽象表达形式,具有平台无关性

基本分隔符

//Flie类静态成员变量
		//与系统有关的路径分隔符
		String separator=File.pathSeparator;
		System.out.println(separator);
		//与系统有关的默认名称分隔符
		separator=File.separator;
		System.out.println(separator);//向右\目录名称分割

路径

绝对路径:写出的路径在系统中具有唯一性,

相对路径:表示的是路径之间的相对关系。有父子目录,都是相对的路径

File三种重载形式

package File;

import java.io.File;

/*
 * 将操作系统中的目录(directory)(文件夹)、文件(file)、路径(path),封装成File对象
 * 提供操作方法、File与系统无关的类
 */
public class FileDome {
	public static void main(String[] args) {
		
	}
	/*
	 * File(String parent,String child)
	 * 传递路径,传递字符串的父路径,字符串的子路径
	 */
	public static void function1(String child) {
		File file = new File("",child );//好处在于可以随意的控制父子路径
	}
	/*
	 * File(String pathname)
	 * 传递路径名:可以写到文件夹里,可以写到一个文件
	 * c:\\abc    c:\\abc\\Dome.java
	 * 将路径封装成File类型对象
	 */
	public static void function() {
		File file=new File("E:\\千锋课程学习\\java基础视频\\day22_video");
		System.out.println(file);//将路径变成file对象,对于路径是真是假,不会分辨
		
	}
	/*File(File parent,String  child)
	 * 传递File类型父路径,String类型子路径
	 * 好处:父路径是File路径,父路径可以直接调用File类方法
	 */
	public static void function2() {
		File file = new File(parent, child)
	}
}

File:创建功能

/*File类的创建和删除功能
 * 文件或者是目录
 * 
 */
public class FileDome {
	public static void main(String[] args) throws IOException {
		function();		
	
	}
	/*
	 * File创建文件夹功能
	 * 返回值也是Boolean类型方法:mkdirs可以创建多级文件夹
	 * 创建的路径也在方法File构造方法中给出
	 * 文件夹已经存在了,将不会继续创建
	 * 
	 */
	public static void function1() {
		File file = new File("c:\\sbc");
		System.out.println(file);//在c盘创建文件夹
	}
	/*
	 * File创建文件的功能
	 * Boolean createNewFile()
	 * 创建的文件的路径和文件名是在File类的构造方法中给出的
	 * 如果文件名已经存在了,就不会再继续创建
	 * 
	 */
	public static void function() throws IOException{
		File file = new File("C:\\a.txt");
		boolean b= file.createNewFile();
		System.out.println(b);
	}
}

File:删除功能

 File具有删除功能,且删除功能不分文件夹和文件
     * 返回值类型Boolean,方法delete
     * 删除的文件或者文件夹,在File构造方法中给出
     *删除成功返回ture,失败返回false,并且删除的东西不可找回
     


public class FileDome {
	public static void main(String[] args) throws IOException {
		function();		
	}
	public static void function() {
		File file=new File("C:\\123");
		boolean b=file.delete();
		System.out.println(b);
	}
}

File:获取功能

获取路径中最后部分的名字

/*返回值String 方法getName
     * 返回路径中表示的文件或者文件夹名

public static void functin() {
		File file = new File("C:\\asd");
		String name =file.getName();
		System.out.println(name);
	}

返回值是long方法length()

返回路径中表示文件的字节数

可以拿到文件的字节数

public static void functin() {
		File file = new File("C:\\asd");
		long length=file.length();
		System.out.println(length);
	}

返回值是String 方法是:getAbsolutePath     获取文件的绝对路径

返回值是File类型  方法:getAbsoluteFile(推荐使用)

获取绝对路径

在eclipse环‘’境中,如果写的是一个相对路径,绝对位置是工程根目录

public static void functin() {
		File file = new File("C:\\asd");
		File absolute=file.getAbsoluteFile();
		System.out.println(absolute);
	}

获取父路径:

**返回值String,方法:getParend

返回值是File,方法:getParendFile

如果方法返回值是一个对象可以使用方法调用链父路径,父路径的父路径以此类推

	public static void functin() {
		File file = new File("C:\\asd");
		File parent=file.getAbsoluteFile().getParentFile().getParentFile();
		System.out.println(parent);
	}

获取功能list和listFiles

list返回的是文件以及文件夹的名字

public static void function() {
		File file = new File("d:\\asd");
		String[] strArr=file.list();
		System.out.println(strArr.length);
		for(String str:strArr) {
			System.out.println(str);
		}
	}

listFiles

返回值是File类型,可以调用File中的方法,用着更加便利

返回的是文件夹及文件的全路径和名字

void printDirFileAll(String dirName) {
		File f = new File(dirName);
		File[]   file = f.listFiles();//获取到目录下的文件,将它又转换为文件对象
		if(file!=null) {
			for(File  ftemp :file) {			
				if(ftemp.isDirectory()) {
					printDirFileAll(ftemp.getAbsolutePath());//回调,进入一层层目录
				}else {
					System.out.println(ftemp.getAbsolutePath());//打印文件的绝对路径
				}
			}
		}
	}

 

File判断功能

返回值Boolean,方法exists

判断File构造方法中封装路径是否存在

存在返回ture

public static void functin() {
		File file = new File("C:\\asd");
		boolean b=file.exists();
		System.out.println(b);
	}

返回值Boolean,方法:isDirectory

判断File构造方法中封装的路径是不是文件夹

public static void functin() {
		File file = new File("C:\\asd");
		if(file.exists()) {//p判断文件是不是存在
		boolean b=file.isDirectory();
		System.out.println(b);
	}
}

递归算法查看文件

打印TXT文件的绝对路径,运用递归算法

static int i=0;
	void findDirFileAll(String desName) {
		File f = new File(desName);
		File[]   file = f.listFiles();//获取到目录下的文件,将它又转换为文件对象
		if(file!=null) {
			for(File  ftemp :file) {			
				if(ftemp.isDirectory()) {
					findDirFileAll(ftemp.getAbsolutePath());//回调,进入一层层目录
				}else {
					if(ftemp.getName().endsWith(".md")) {  
						i++;
							System.out.println(ftemp.getName());//打印.txt后缀的所有文件的绝对路径
					}
				}
			}
		}
	}

File 文件过滤器

方法:listFiles

遍历目录的时候可以根据需要,只获得满足条件的文件

遍历目录方法listFiles()重载形式

listFiles(FileFilter  filter)接口形式

传递FileFilter接口的实现类,必须自定义接口实现类,重写抽象方法

最终接口实现类对象传递到遍历方法listFiles

public class FileDome {
	public static void main(String[] args){
		File file =new File("c:\\ffff");
		File[] fileArr=file.listFiles(new MyFilter());	
	}
}
/*
 * 自定义过滤器,实现FileFilter接口,重写抽象方法
 */
class MyFilter implements FileFilter{
	public boolean accept(File pathname) {
		/*pathname接受到的也是文件全路径
		 * c:\\ffff
		 * 对路径进行判断,如果是java文件,返回true否则返回false
		 * 判断依据:后缀名.java
		 */
		//String name = pathname.getName();//判断后缀是不是.java
		return pathname.getName().endsWith(".java");
	}			
}

过滤器工作原理:accept方法接收到参数pathname,参数是listFiles传递过来的,在accept方法中进行判断,是不是java文件,是的话返回true,经过listFiles保存到数组File中,否则返回false

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值