File类

File类:

Java.io.File类
文件和目录路径的抽象表示形式
Java把电脑中的文件和和文件夹(目录)封装成一个File类,我们可以使用File类对文件和文件夹进行操作
我们可以使用File类对方法,创建、删除、获取、判断是否存在、遍历文件及文件夹,获取文件的大小
File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法

记住三个重点词:
file :文件
Directory :文件夹/目录
Path :路径

路径:
绝对路径:是一个完整的路径,从盘符开始
相对路径:只写当前项目名,省略项目的根目录
注意:
1.路径不区分大小写
2.路径中的文件名称分隔符使用本系统的
3.反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠

·获取分隔符符号(不同系统不一样)

import java.io.File;

public class File7 {
	public static void main(String[]args) {
		String pathSeparator = File.pathSeparator;
		System.out.println(pathSeparator);//:   路径分隔符
		//Windows是;Linux是:Mac是:
		
		String separator = File.pathSeparator;
		System.out.println(separator);//:	文件名称分隔符
		//Windows是/ Linux是\ Mac是:
	}
}

file类的构造方法

import java.io.File;
ublic class File8 {
	public static void main(String[]args) {
		show1();
		show2("c://","a.txt");
		show3();
	}

	private static void show3() {
		File parent = new File("D:");
		File file = new File(parent,"hello.java");
		System.out.println(file);// D:/hello.java
	}

	private static void show2(String parent,String child) {
		File f3 = new File(parent,child);
		System.out.println(f3);
	}
	private static void show1() {
		File f1 = new File("/Users/a/Desktop/图片练习");
		System.out.println(f1);//重写了Object类的toString方法  // /Users/a/Desktop/图片练习
		
		File f2 = new File("/Users/a/Desktop");
		System.out.println(f2);//重写了Object类的toString方法  // /Users/a/Desktop  
		
		File f3 = new File("/图片练习");
		System.out.println(f3);//重写了Object类的toString方法  // /Users/a/Desktop/图片练习
	}
}

1. show1()使用的是 File(String pathname) 方法
通过给定路径名称字符串转换成抽象路径名称来创建一个新的File实例
参数 :String pathname
是字符串的路径名称
路径可以以文件或者文件夹结尾
路径可以是相对路径也可以是绝对路径
路径可以存在,也可以不存在
!创建File对象,只是把路径封装成File对象,不考虑路径的真假情况
2. show2()使用的是 File(String parent,String child) 方法
根据parent路径名称字符串和child路径名称字符串创建一个新的file实例
参数:parent 父路径
child 子路径
好处:把路径分成类两部分,使用灵活,便于修改。
3.show3()使用的是 File(File parent,String child) 方法
根据parent抽象路径名和child字符串路径名创建一个新file实例
参数:parent 父路径
child 子路径
好处:把路径分成类两部分,使用灵活,便于修改。

查看文件的相关信息

import java.io.File;
public class File1 {
	public static void main(String[]args) {
		//创建File文件对象
		File file = new File("example.txt");
		System.out.println("文件名称:"+file.getName());
		System.out.println("文件的相对路径:"+file.getPath());
		System.out.println("文件的绝对路径:"+file.getAbsolutePath());
		System.out.println("文件的父路径:"+file.getParent());
		System.out.println(file.canRead()?"文件可读":"文件不可读");
		System.out.println(file.canWrite()?"文件可写":"文件不可写");
		System.out.println(file.isFile()?"是一个文件":"不是一个文件");
		System.out.println(file.isDirectory()?"是一个目录":"不是一个目录");
		System.out.println(file.isAbsolute()?"是绝对路径":"不是绝对路径");
		System.out.println("最后的修改时间为:"+file.lastModified());
		System.out.println("文件大小为:"+file.length());
		System.out.println("是否成功删除文件?"+file.delete());	
	}
}

结果:
文件名称:example.txt
文件的相对路径:example.txt
文件的绝对路径:/Users/a/Desktop/Java/Example/example.txt
文件的父路径:null
文件可读
文件可写
是一个文件
不是一个目录
不是绝对路径
最后的修改时间为:1557913240802
文件大小为:4
是否成功删除文件?true

遍历目录下的文件

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

public class File2 {
	public static void main(String[]args) {
		//创建File对象,并指定文件路径
		File file = new File("/Users/a/Desktop/Java/Example/source");
		//判断是否是目录
		if(file.isDirectory()) {
			//获取目录中的所有文件的名称
			String[] fileNames = file.list();
			//对指定路径下的文件或目录进行遍历
			Arrays.stream(fileNames).forEach(f->System.out.println(f));
		}
	}
}

结果:
.DS_Store
src.JPG

筛选遍历指定目录下所有拓展名为”.txt“的文件

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

public class File3 {
	public static void main(String[]args) {
		//创建file对象并指定文件路径
		File file = new File("/Users/a/Desktop/Java/Example");
		//判断是否为目录
		if(file.isDirectory()) {
			//使用Lamda表达式过滤目录中所有以“.txt”结尾的文件的名称
			String[] fileNames =file.list((dir,name)->name.endsWith(".txt"));
			//对指定路径下的文件或目录进行遍历
			Arrays.stream(fileNames).forEach(f->System.out.println(f));
		}
	}
}

结果:
out.txt
reader.txt
writer.txt
time.txt
test.txt

有子目录需要遍历,使用递归

import java.io.File;

public class File4 {
	public static void main(String[]args) {
		//创建file对象并指定文件路径
		File file = new File("/Users/a/Desktop/Java/Example");
		//调用fileDir()方法,遍历目录
		fileDir(file);
	}
	private static void fileDir(File file) {
		//获得目录下的全部文件并赋给数组
		File[] listFiles = file.listFiles();
		//循环遍历数组
		for(File files:listFiles) {
			//如果遍历的是目录,则递归调用fileDir()方法
			if(files.isDirectory()) {
				fileDir(file);
			}
			//输出文件路径
			System.out.println(files);
		}
	}
}

结果:
/Users/a/Desktop/Java/Example/.DS_Store
/Users/a/Desktop/Java/Example/reader.txt
/Users/a/Desktop/Java/Example/out.tx

使用delect()方法删除指定目录下的文件和文件夹

import java.io.File;

public class File5 {
	public static void main(String[]args) {
		//创建file对象并指定文件路径
		File files = new File("/Users/a/Desktop/Java/Example/source");
		//调用删除方法
		delectDir(files);
	}
	//删除方法
	public static void delectDir(File files) {
		//获得目录下的全部文件并赋给数组
				File[] listFiles = files.listFiles();
				//循环遍历数组
				for(File file:listFiles) {
					//如果是目录文件,则递归调用删除方法
					if(files.isDirectory()) {
						delectDir(file);
					}
					//如果是文件,则删除
					file.delete();
				}
				//删除文件夹内所有文件后,再删除文件
				files.delete();
	}
}
  • 注意:在Java中删除目录的操作是通过Java虚拟机直接删除而是不走回收站的,文件一旦删除就无法恢复, 因此在进行删除操作时需格外小心。

使用RandomAccessFile类来模拟记录软件测试使用的次数

import java.io.RandomAccessFile;

public class Flie6 {
	public static void main(String[]args)throws Exception{
		//创建RandomAccessFile对象,并以读写模式打开time.txt文件
		RandomAccessFile raf = new RandomAccessFile("time.txt","rw");
		//读取还可以使用的次数,第一次读取时times为5
		int times = Integer.parseInt(raf.readLine())-1;
		//判断剩余次数
		if(times>0) {
			//执行一次少一次
			System.out.println("您还可以试用"+times+"次!");
			//将记录指针重新指向文件开头
			raf.seek(0);
			//将剩余次数再次写入文件
			raf.write((times+"").getBytes());
		}else {
			System.out.println("试用次数已经用完!");
		}
		//关闭这个随机存取文件流并释放任何系统
		raf.close();	
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值