File类

File类

/*

  • java.io.File类
  • 代表硬盘上的一个文件或者目录
  • 每个File类文件的对象表示一个磁盘文件或目录,其对象属性中包含了文件或目录的相关信息如:名称、长度、所含文件个数等
  • 调用它的方法则可以完成对文件或者目录的常用管理操作例如:创建、删除等操作
  • File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法
    */

类中静态方法

1.分隔符:
1-1:File.pathSeparatorChar 与系统有关的路径分隔符
Windows:分号(;) Linux:冒号(:)
(该静态常量字段会根据系统自动自配初始化的取值)
例:

char psc=File.pathSeparatorChar;
System.out.println(psc);

输出结果:;(笔者使用的是window系统)
1-2:File.pathSeparator 同上,但返回类型为String

1-3:File.separatorChar 与系统有关的默认名称分隔符
Windows:反斜杠(\)Linux:正斜杠(/)
(该静态常量字段会根据系统自动自配初始化取值)
例:

char sc=File.separatorChar;
System.out.println(sc);

输出结果:\(Windows系统)
1-4:File.separator(返回String型)
1-5:在开发中,我们推荐使用以上的字段进行相应的分割。如:
Windows系统:C:\develop\a\a.txt
Linux路径:C:/develop/a/a.txt
Java代码路径:“C:”+File.separator+“develop”+File.separator+“a”+File.separator+“a.txt”

在学习期间,为了简化起见,我们很多时候使用相应系统的分隔符,如:java代码路径:d:\Java202\a\a.txt,此路径应用于Windows系统,由于\为转义字符,所以要\

构造方法

**2-1:**File(String pathname);根据字符串创建路径对象

String str="D:\\JavaStudy";
File file=new File(Str);
System.out.println(file);

**注意:**创建File对象,只是把字符串路径封装到File对象中,不考虑路径的存在与否,可以存在,也可以不存在。
提前插入一个方法:boolean exists():判断该路径是否存在

if(file.exists()){
	System.out.println("file路径已经存在");
}else{
	System.out.println("file路径创建成功");
}

**2-2:**File(String parent,String child)根据父字符串和子字符串的拼接效果创建路径对象

File file2=new File(str,"a");
if(f2.exists()) {
		System.out.println("f2路径已存在");
	}else {
		f2.mkdir();	//创建目录
		System.out.println("f2路径创建成功");
	}

**2-3:**File(File parent,String child);根据父路径对象和子字符串的连接效果创建路径对象

File file3=new File(file1,"b");
if(f3.exists()) {
		System.out.println("f3路径已存在");
	}else {
		f3.mkdir();	//创建目录
		System.out.println("f3路径创建成功");
	}

路径

**3-1:**路径不区分大小写

File file4=new File(file,"B");
if(file4.exists()){
	System.out.println("file4路径已存在");
}else{
	file4.mkdir();//创建目录
	System.out.println("file4路径创建成功");
}

输出结果:file4路径已存在
原因:上文的同级目录中已存在目录b,此时创建目录B就会返回true,表示目录已存在

**3-2:**路径可以是文件夹也可以是文件

File file5=new File("f1,"也可以是文件.txt");
if(f5.exists()){
	System.out.println("file5路径已存在");
}else{
	f5.createNewFile();
	System.out.println("file5路径创建成功");
}

绝对路径和相对路径

**4-1:**绝对路径:从盘符开始写起,如前面所举例的均为绝对路径
**4-2:**相对路径:相对于当前某个位置而言的路径。不同类型的情境有不同的相对路径。对于File而言指的是项目名之下,作为项目的子路径而存在

File file6=new File("folder");//相对路径
if(file6.exists()){
	System.out.println("file6路径已存在");
}else{
	file6.mkdir();//该目录会创建在本工程的同级目录下
	System.out.println("f6路径创建成功");
}

方法

获取功能方法
**5-1:**public length();返回此File表示的文件长度
注意:文件夹是没有长度的
**5-2:**public String getAbsolutePath();返回此File的绝对路径名字符串
**5-3:**public String getPath();获取文件相对路径
**5-4:**public String getName();返回由此File表示的文件或目录名称

判断功能方法
**5-5:**boolean exists();此File表示的文件或目录是否实际存在
**5-6:**boolean isDirectory();此File表示的是否为目录
**5-7:**boolean isFile();此File表示的是否为文件

创建删除功能方法
**5-8:**public boolean createNewFile();当且仅当具有该名称的文件尚不存在时,创建一个新的空文件
**5-9:**public boolean delete();删除有此File表示的文件名或目录
**5-10:**public boolean mkdir();创建由此File表示的目录
**5-11:**public boolean mkdirs();创建由此File表示的目录,包括任何必须但不存在的父目录

目录的遍历
**5-12:**public String[]list()返回一个String数组,表示该File目录中所有子文件或目录
**5-13:**public File[] listFiles();返回一个File数组,表示该File目录中的所有子文件或目录

package SE04.n1File;
import java.io.File;
import java.io.FileFilter;
public class Demo03Recursion {
	public static void main(String[] args) {
//		打印多层次目录
		File f=new File("folder");
		print(f);
	}
	private static void print(File f) {
		// TODO 自动生成的方法存根
		File[]file =f.listFiles();//获取file中的父目录列表
		for (File file2 : file) {//遍历父目录
			if(file2.isDirectory()) {//如果是目录
				print(file2);//递归进入里层目录
			}else if(file2.isFile()) {//如果是文件
					System.out.println(file2.getAbsolutePath());//输出文件绝对路径
			}
		}
	}

FileFilter过滤器

/*

  • Java.io.FileFilter是一个接口,是File的过滤器。
  • 该接口的对象可以传递给File类的listFiles(FileFilter o)作为参数,接口中只有一个方法:
  • boolean accept(File pathname);测试pathname是否应包含在当前File目录中,符合则返回true
  • 接口作为参数,需要传递子类的对象,重写其中的方法。这个地方我们选择匿名内部类的方式比较简单
  • accept()方法,参数为File,表示当前File下所有的子文件和子目录。保留住则返回true,过滤掉则返回false
  • 通过过滤器的作用,listFiles(FileFilter o)返回的数组元素都是复合条件的
    */
package SE04.n1File;

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

public class Demo04FileFilter {
	public static void main(String[] args) {
		File f=new File("folder");
		print(f);
	}
	
	private static void print(File f) {
		// TODO 自动生成的方法存根
		File[]file =f.listFiles(new FileFilter() {//FileFilter的匿名内部类
		//用于过滤出指定的文件类型或文件名
			@Override//重写唯一方法
			public boolean accept(File pathname) {
				boolean flag = false;
			if (pathname.isDirectory()) {//判断当前路径是否为目录,如果是目录,进入递归,解析其子目录
				print(pathname);
			}else {//非目录直接判断文件是否符合要求(这里设置的筛选是png和bmp格式)
				flag = pathname.getName().endsWith(".png")||pathname.getName().endsWith(".bmp");
			}
			return flag;}//返回true则写入File数组
		});
		for (File file2 : file) {
			System.out.println(file2.getAbsolutePath());
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值