File类

概述:

​ java中对文本文件这种事物的一种描述的类,定义一些可以操作文本文件的功能和属性
​ 一个文件文件的路径对应就有一个File对象,这个File文件对象就 可以操作对应路径的文件本身

文本文件和File文件对象有关系的:

File对象是对文本文件的一种虚拟化【File对象存在对应的文本文件不一定存在】

File对象是通过文件的路径创建出来的

路径:

绝对路径:

​ 包含磁盘根目录的全路径 比如: C:\a\b.txt

相对路径:

​ 以一个固定的路径为参考得到的部分路径

​ 比如:以c:\a 路径为参考 b.txt就是相对路径

工程项目相对于工程路径 可以使用相对路径

File的构造方法

1、File(String path):

创建一个以path路径为目标文件的文件对象

2、File(String parent, String child):

创建一个以parent+child拼接后的路径为目标文件的文件对象

3、File(File file, String child):

创建一个以file文件对象的路径+child拼接后的路径为目标文件的 文件对象

File的创建方法

概述:

​ 得到File的对象对应有一个文本文件,使用对象调用创建文本文件的功能,在对应的路径下创建出来对应的文本文件

​ 给定的路径是要计划操作的文本文件【有可能不存在】的路径。

​ 只要给我一个路径就可以先得到一个File对象,对象就可以调用相关功能在磁盘当中创建对应的文本文件。

注意:

File对象存在和文本文件是否存在没有关系。

功能:

1、boolean createNewFile():

创建调用对象对应路径的文本文件。

​ 注意事项:
​ 被调用的时候确保文件所在的目录必须在磁盘中存在

2、boolean mkdir():

创建单级文件夹【就是一个文件夹】

​ 注意事项:
​ 被调用的时候确保文件所在的目录必须在磁盘中存在

3、boolean mkdirs():

​ 创建多级文件夹【多个文件夹】

代码示例:

import java.io.File;
import java.io.IOException;

public class FileDemo {
	public static void main(String[] args) throws IOException {
		
		//获取文件对象,方式一: 
		File file = new File("a"); //相对路径
		System.out.println(file);
		
		//获取文件对象,方式二
		File file3 = new File(file, "b/c");
		System.out.println(file3);
		
		//获取文件对象,方式三
		File file4 = new File("b","c/d");
		System.out.println(file4);
		
		// 想要操作那个文件  先得到该文件的File对象,得到HelloWord.txt文件对象
		File file2 = new File(file, "HelloWorld.txt");
		//调用createNewFile,创建调用对象对应路径的文本文件
		boolean cnf = file2.createNewFile();
		System.out.println("创建文件" + cnf);
		
		//创建单级文件夹
		boolean m = file.mkdir(); //成功 true 反之 false
		System.out.println("创建单级文件夹" + m); 
		
		//创建多级文件夹
		boolean m2 = file3.mkdirs();
		System.out.println("创建多级文件夹" + m2);
		boolean m3 = file4.mkdirs();
		System.out.println("创建多级文件夹" + m3);
		
	}

}

File功能

File 的删除功能

delete():

删除磁盘中对应的文本文件

注意:
1、只能删除空的文件夹
2、删除不走回收站

代码示例:

import java.io.File;

public class FileDemo02 {
	public static void main(String[] args) {
		//创建要操作的文件的File对象
		File file = new File("b/c");
		//创建文件夹
		file.mkdirs();
		
		//删除
		boolean del = file.delete();  //删除不走回收站
		System.out.println(del);
		
		File file2 = new File("b/c/d");
		//创建文件夹
		file.mkdirs();
		File file3 = new File("b");
		//删除
		boolean del2 = file3.delete();  //删除的文件夹必须为空
		System.out.println(del2);
		
	}

}

File的重命名(或剪切)方法

renameTo(File dest):

使用场景:

同一个文件夹下:重命名的功能

不在同一个文件夹下:剪切功能, 可以剪切并重命名

代码示例:

import java.io.File;

public class FileRenameToDemo {
	public static void main(String[] args) {
		//创建要操作的文件夹的File对象
		File file = new File("a/a.txt");
		File file2 = new File("a/b.txt");
		//同文件夹下重命名
		boolean rt = file.renameTo(file2);
		System.out.println(rt);
		
		//创建不同文件夹的File对象
		File file3 = new File("a/c.txt");
		File file4 = new File("b/c.txt");
		//不同文件夹下是剪切功能
		boolean rt2 = file3.renameTo(file4);  
		System.out.println(rt2);
	}

}

File的判断功能

1、exists():

判断调用对象对应的文本文件是否在磁盘中存在

2、isFile():

判断调用对象对应的文本文件是不是文件

3、isDirectory():

判断调用对象对应的文本文件是不是文件夹

注意:

​ isFile和isDirectory方法调用的时候要确保file对象对应的文件在磁盘中存在才有意义

代码示例:

import java.io.File;

public class FileEqualsDemo {
	public static void main(String[] args) {
		//创建要操作的文件的File对象
		File file = new File("a");  //文件夹存在
		File file1 = new File("a/b/c/d"); //不存在
		File file2 = new File("a/b.txt");  //记事本文件存在
		File file3 = new File("b/c");  //问价夹存在
		
		//判断路径是否存在
		boolean boo1 = file.exists();
		System.out.println(boo1);  //true
		boolean boo2 = file1.exists();
		System.out.println(boo2);//fasle
		
		//判断调用对象对应的文本文件是不是文件
		boolean boo3 = file2.isFile();
		System.out.println(boo3);//true
		
		//判断调用者对象对应的文件是不是文件夹
		boolean boo4 = file3.isDirectory();
		System.out.println(boo4);//true
	}

}

File的获取功能

1、getAbsolutePath():

获取文件对象的绝对路径

2、getPath():

获取构造方法传入的路径 ( 工程中传入的路径是什么,获取的就是什么)

3、getName():

获取文件对象的文件名 ( 获取到的只是单纯的文件名)

文件对象的名:包含包路径的全限定类名
但是这个方法获取的是不包含包路径的文件名

4、length():

获取文件中内容的长度,单位字节

使用场景:
主要是给文件的File对象调用的,文件夹对象调用没有意义。
​ 文件夹没有大小【大小根据内部文件的大小决定】

5、String[] list():

获取文件夹下所有文本文件的文件名,返回值是一个字符串数组

6、File[] listFiles():

获取文件夹下所有文本文件的File对象,返回值是一个File数组

代码示例:

import java.io.File;
import java.util.Arrays;

public class FileDemo3 {
	public static void main(String[] args) {
		//创建要操作的File对象
		File file = new File("a/b.txt");
		
		//获取文件对象的绝对路径
		File file2 = file.getAbsoluteFile();
		System.out.println(file2); //E:\a\b.txt
		
		//获取构造方法传入的路径
		System.out.println(file.getPath()); //a\b.txt
		
		//获取文件对象的文件名
		System.out.println(file.getName());  //b.txt
		
		//获取文件中内容的长度(文件大小的字节数)
		System.out.println(file.length());  //99
		
		//获取文件夹下所有文本文件的文件名,返回值是一个字符串数组
		File file3 = new File("a");
		String[] list = file3.list();
		//遍历数组
		System.out.println(Arrays.toString(list)); //[b.txt, 新建文件夹, 新建文件夹 (2), 新建文件夹 (3)]
		
		//获取文件夹下所有文本文件的File对象,返回值是一个File数组
		File[] file4 = file3.listFiles();
		for (File file5 : file4) {
			System.out.print(file5 + " "); //a\b.txt a\新建文件夹 a\新建文件夹 (2) a\新建文件夹 (3) 
		}
				
	}

}

获取功能的练习

键盘录入一个字符串,表示一个文件夹路径,如果不是文件夹路径则提示重新录入,并打印此文件夹下所有大于20M的后缀名为.mp4的文件名

是文件夹:

分析:

      【重复录入的过程 肯定使用while循环】

                判断录入的路径是不是文件夹路径【循环体判断】

                        把路径变为文件File对象 调用isDirectory方法判断

                            是【true】:

                                    1、打印当前文件夹下,所有的大于 50M 的后缀名是.mp4 的文件的文件名

                                            ①、获取所有的文件的File对象

                                            ②、遍历获取到大的File对象的数组得到单个File对象【录入的文件夹下文件的File对象】

                                            ③、判断File对象是不是文件

                                                    是:

                                                        1、分别获取大小和名称

                                                        2、判断大小是否大于50M同时名称是不是.mp4结尾

​                                                             满足:打印文件名

                                    2、停止录入【break】

                            不是【false】:

                                    提示不对重新录入

代码示例:

import java.io.File;
import java.util.Scanner;

/**
 *键盘录入一个字符串,表示一个文件夹路径,
 *如果不是文件夹路径则提示重新录入
 * 并打印此文件夹下所有大于20M的后缀名为.mp4的文件名
 */
public class Demo01 {
	public static void main(String[] args) {
		//创建键盘录入对象
		Scanner scanner = new Scanner(System.in);
		//通过while循环进行循环录入
		while (true) {
			System.out.println("请输入一个文件夹路径: ");
			String str = scanner.nextLine();
			//获取录入的路径,创建File对象
			File file = new File(str);
			//判断录入的是否为文件夹
			if (file.isDirectory()) {
				//如果存在,则获取当前文件夹下所有的文件对象
				File[] list1 = file.listFiles();
				//遍历文件对象,找出所有问价大于50M并以.mp4结尾的文件
				for (File file2 : list1) {
					if (file2.length() > 50* 1024 * 1024 && file2.getName().endsWith(".mp4")) {
						System.out.println(file2.getName());	
					}
				}
				break;
			}else {
				System.out.println("输入有误,请重新输入");
			}
		}
		
	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值