JAVA递归、File类常用构造器及方法、目录的子文件获取、递归输出指定目录下的所有目录及文件、删除一个文件夹下的所有文件及根目录 JAVA第十五天(一)

递归

  递归就是方法调用方法自身。递归一定有跳出条件。

	public static void main(String[] args){
		diGui(0);
	}
	public static void diGui(int i) {
		if(i < 5) {
			i++;
			System.out.println("这句话将被重复输出!"+i);
			diGui(i);
		}	
	}

输出结果:
这句话将被重复输出!1
这句话将被重复输出!2
这句话将被重复输出!3
这句话将被重复输出!4
这句话将被重复输出!5

File

  我们的操作系统中所有的设备的体现都是文件(包含文件夹),Java对文件做了抽象,在JavaIO包中提供了文件的操作功能。

 常用构造器

注意:路径名的字符串内既可"C:\\"也可"C:/"

File(File parent, String child) 
从父抽象路径名和子路径名字符串创建新的 File实例。
例:
第一种方法:
		File file = new File("C:/");
		File file2 = new File(file,"Test.txt");
		System.out.println(file2);
第二种方法:
		File file = new File(new File("C:\\"),"Test.txt");
输出结果:
C:\Test.txt
C:\Test.txt
---------------------------------------------------------------------------------
File(String pathname)(推荐使用!)
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 
例:
		File file = new File("C:/Test.txt");
		System.out.println(file);
输出结果:
C:\Test.txt
---------------------------------------------------------------------------------
File(String parent, String child) 
从父路径名字符串和子路径名字符串创建新的 File实例。
例:
		File file = new File("C:/","Test.txt");
		System.out.println(file);
输出结果:
C:\Test.txt
---------------------------------------------------------------------------------

 常用方法

  创建文件

返回值类型					方法名		参数列表
boolean 				createNewFile() 
当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。 
(调用该方法的语句会存在异常,可选择向上抛出或try...catch,此处向上抛出了)
例:
	public static void main(String[] args) throws IOException {
		File file = new File("C:/Test.txt");
		System.out.println(file.createNewFile());
	}
输出结果:
true
---------------------------------------------------------------------------------

  创建目录

boolean 				mkdir() 
创建由此抽象路径名命名的目录。  
例:
	public static void main(String[] args) throws IOException {
		File file = new File("C:/Test");
		System.out.println(file.mkdir());
	}
输出结果:
true
---------------------------------------------------------------------------------
boolean 				mkdirs() 
创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
(用于在已存在父目录中创建子目录,当父目录不存在时会自动创建)
例:
		File file = new File("C:/Test/Test");
		System.out.println(file.mkdirs());
输出结果:
true
---------------------------------------------------------------------------------

  删除文件或目录

boolean 				delete() 
删除由此抽象路径名表示的文件或目录。如果此路径名表示目录,则目录必须为空才能删除。
例:
	public static void main(String[] args) throws IOException {
		File file = new File("C:/Test/Test.java");
		System.out.println(file.createNewFile());
//		删除文件
		System.out.println(file.delete());
//		删除空目录
		System.out.println(new File("C:/Test/Test").delete());
	}
输出结果:
true
true
true
---------------------------------------------------------------------------------

  相对路径的创建于删除(项目目录)

例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		//创建相对路径目录
		System.out.println(file.mkdir());
		//创建相对路径文件
		System.out.println(file2.createNewFile());
		//删除相对路径文件
		System.out.println(file2.delete());
		//删除相对路径目录
		System.out.println(file.delete());
	}
输出结果:
true
true
true
true
---------------------------------------------------------------------------------

  文件的判断

boolean 				exists() 
测试此抽象路径名表示的文件或目录是否存在。  
例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		System.out.println(file.mkdir());
		System.out.println(file2.createNewFile());
		System.out.println(file2.exists());
		System.out.println(file.exists());
	}
输出结果:
true
true
true
true
---------------------------------------------------------------------------------
boolean 				isFile() 
测试此抽象路径名表示的文件是否为普通文件。  
例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		file.mkdir();
		file2.createNewFile();
		System.out.println(file2.isFile());
	}
输出结果:
true
---------------------------------------------------------------------------------
boolean 				isDirectory() 
测试此抽象路径名表示的文件是否为目录。  
例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		file.mkdir();
		file2.createNewFile();
		System.out.println(file.isDirectory());
	}
输出结果:
true
---------------------------------------------------------------------------------
boolean 				isAbsolute() 
测试这个抽象路径名是否是绝对的。  
例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		File file3 =new File("C:/");
		file.mkdir();
		file2.createNewFile();
		System.out.println(file.isAbsolute());
		System.out.println(file3.isAbsolute());
	}
输出结果:
false
true
---------------------------------------------------------------------------------
boolean 				canRead() 
测试应用程序是否可以读取由此抽象路径名表示的文件。  
例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		file.mkdir();
		file2.createNewFile();
		System.out.println(file2.canRead());
	}
输出结果:
true
---------------------------------------------------------------------------------
boolean 				canWrite() 
测试应用程序是否可以修改由此抽象路径名表示的文件。 
例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		file.mkdir();
		file2.createNewFile();
		System.out.println(file2.canWrite());
	}
输出结果:
true
---------------------------------------------------------------------------------
boolean 				isHidden() 
测试此抽象路径名命名的文件是否为隐藏文件。 
例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		file.mkdir();
		file2.createNewFile();
		System.out.println(file2.isHidden());
	}
输出结果:
true
---------------------------------------------------------------------------------

  文件的获取

String 					getAbsolutePath() 
返回此抽象路径名的绝对路径名字符串。  
返回此抽象路径名的绝对形式。 
例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		file.mkdir();
		file2.createNewFile();
		String str = file2.getAbsolutePath();
		System.out.println(str);
	}
输出结果:
E:\JAVA\eclipse workspace GBK\TestAll\Test\Test.txt
---------------------------------------------------------------------------------
String 					getPath() 
将此抽象路径名转换为路径名字符串。 
例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		file.mkdir();
		file2.createNewFile();
		String str = file2.getPath();
		System.out.println(str);
	}
输出结果:
Test\Test.txt
---------------------------------------------------------------------------------
String 					getName() 
返回由此抽象路径名表示的文件或目录的名称。 
例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		file.mkdir();
		file2.createNewFile();
		String str = file2.getName();
		System.out.println(str);
	}
输出结果:
Test.txt
---------------------------------------------------------------------------------
long 					length() 
返回由此抽象路径名表示的文件的长度。 
例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		file.mkdir();
		file2.createNewFile();
		long lg = file2.length();
		System.out.println(lg);
	}
输出结果:
0
---------------------------------------------------------------------------------
long 					lastModified() 
返回此抽象路径名表示的文件上次修改的时间。 
例:
	public static void main(String[] args) throws IOException {
		File file = new File("Test");
		File file2 = new File("Test/Test.txt");
		file.mkdir();
		file2.createNewFile();
		long lg = file2.lastModified();
		System.out.println(lg);
		//将时间格式转换
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = new Date(lg);
		System.out.println(sdf.format(date));
	}
输出结果:
2020-03-22 09:06:50
---------------------------------------------------------------------------------

  目录的子文件获取

static File[] 			listRoots() 
列出可用的文件系统根。 
例:
		File[] fe = File.listRoots();
		for(File f:fe) {
			System.out.print(f+" ");
		}
输出结果:
B:\ C:\ D:\ E:\ F:\ G:\ H:\ J:\ L:\ 
---------------------------------------------------------------------------------
File[] 					listFiles() 
返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。 
例:
	public static void main(String[] args) throws IOException {
		File file = new File("C:/Users");
		File[] fe = file.listFiles();
		for(File f:fe) {
			System.out.println(f);
		}
输出结果:
C:\Users\Administrator
C:\Users\All Users
C:\Users\Default
C:\Users\Default User
C:\Users\desktop.ini
C:\Users\Public
---------------------------------------------------------------------------------
String[] 					list() 
返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。(文件和目录名)
例:
		File file = new File("C:/tmp");
		String[] s = file.list();
		for(String str:s) {
			System.out.println(str);
		}
输出结果:
build.properties
config
modules
var
---------------------------------------------------------------------------------

  递归输出指定目录下的所有目录及文件

ListFile类

import java.io.File;

public class ListFiles {
	public static int level = -1;
	public static void printFile(File file) {
//		判断是否为目录
		if(!file.isDirectory()) {
			return;
		}
//		判断文件或目录是否存在
		if(!file.exists()) {
			return ;
		}
		level++;
		File[] files = file.listFiles();
		for(File file1:files) {
//			此处for循环用于输出缩进,形成格式
			for(int i = 0;i<level;i++) {
				System.out.print("\t");
			}
			String name = file1.getName();
			System.out.println(name);
			//先判断是否为目录
			if(file1.isDirectory()) {
				//使用递归
				printFile(file1);
			}
		}
		level--;
	}
}

测试类

public class FileTest {
	public static void main(String[] args){
		File file = new File("C:/Test");
		ListFiles.printFile(file);
	}
输出结果:
Test1
	1.txt
	Test1(1)
		1(1).txt
Test2
	2.txt
Test3
	3.txt
Test4
	4.txt
Test5
	5.txt

---------------------------------------------------------------------------------

  删除一个文件夹下的所有文件及根目录

DeleteFile类

public class DeleteFile {
	public static void deleteFile(File file) {
//		判断是否为目录
		if(!file.isDirectory()) {
			return;
		}
//		判断文件或目录是否存在
		if(!file.exists()) {
			return;
		}
		File[] files = file.listFiles();
		for(File file1:files) {
//			如果是文件将执行删除操作
			if(file1.isFile()) {
				file1.delete();
				if(!file1.exists()) {
					System.out.println(file1.getName()+"文件删除成功!");
				}else {
					System.out.println(file1.getName()+"文件删除失败!");
				}
			}else{
				deleteFile(file1);
			}
//			如果是目录将执行删除操作(可选)
//			注意:只有目录为空时才能被删除
			if(file1.isDirectory()) {
				file1.delete();
				if(!file1.exists()) {
					System.out.println(file1.getName()+"目录删除成功!");
				}else {
					System.out.println(file1.getName()+"目录删除失败!");
				}
			}
		}
		//最后删除根目录(可选)
		if(file.length() == 0) {
			file.delete();
			if(!file.exists()) {
				System.out.println(file.getName()+"目录删除成功!");
			}
		}
	}
}

测试类

	public static void main(String[] args){
		File file = new File("C:/Test");
		DeleteFile.deleteFile(file);
	}

输出结果:
1.txt文件删除成功!
1(1).txt文件删除成功!
Test1(1)目录删除成功!
Test1目录删除成功!
2.txt文件删除成功!
Test2目录删除成功!
3.txt文件删除成功!
Test3目录删除成功!
4.txt文件删除成功!
Test4目录删除成功!
5.txt文件删除成功!
Test5目录删除成功!
Test目录删除成功!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值