java(9):File类

目录

9.1 File类

9.1.1 创建File对象

1、构造方法

9.1.2 创建File对象案例

9.1.3 File类常用的方法

9.1.4 方法的常见使用:

1、在磁盘下创建一层目录,并且在目录下创建文件

 2、创建临时文件

3、遍历指定目录下的文件

 4、遍历指定目录下所有扩展名为“.java”的文件

5、遍历目录下的文件和子目录的文件

6、删除文件及目录:


9.1 File类

通过调用File类提供的各种方法,能够创建,删除或者重命名文件,判断硬盘上某个文件是否存在,查询文件最后修改时间等

9.1.1 创建File对象

1、构造方法

在上表中,所有的构造方法都需要传入文件路径。通常来讲,如果程序只处理一个目录或文件,并且知道该目录或文件的路径,使用第一个构造方法较方便。如果程序处理的是一个公共目录中的若干子目录或文件,那么使用第二个或者第三个构造方法会更方便。

9.1.2 创建File对象案例

1 import java.io.File;
2 public class Test {
3    public static void main(String[] args) {
4        File f = new File("D:\\file\\a.txt");//使用绝对路径构造File对象
5        File f1 = new File("src\\Hello.java");//使用相对路径构造File对象
6        System.out.println(f);
7       System.out.println(f1);
8   }
9 }

9.1.3 File类常用的方法

9.1.4 方法的常见使用:

1、在磁盘下创建一层目录,并且在目录下创建文件

File fileDemo=new File("d:\\hello1\\demo.txt");
        if(!(fileDemo.getParentFile().exists())){  //判断d:\demo目录是否存在
            fileDemo.getParentFile().mkdir();
        }
        if(fileDemo.exists()){                //如果存在这个文件就删除,否则就创建
            fileDemo.delete();
        }else{
            System.out.println(fileDemo.createNewFile());
        }
    }
 }

 2、创建临时文件

程序需要读写一些临时文件,File对象提供了createTempFile()来创建一个临时文件,以及deleteOnExit()在Jvm退出时自动删除该文件。

1 public class Example02 {
2    public static void main(String[] args) throws IOException {
3         // 提供临时文件的前缀和后缀
4        File f = File.createTempFile("itcast-", ".txt"); 
5        f.deleteOnExit(); // JVM退出时自动删除
6        System.out.println(f.isFile());
7        System.out.println(f.getPath());
8    }
9 }

3、遍历指定目录下的文件

1 import java.io.File;
2 public class Example03{
3	public static void main(String[] args) throws Exception {
4         // 创建File对象
5		File file = new File("D:/IdeaWorkspace/chapter07");  
6		if (file.isDirectory()) { // 判断File对象对应的目录是否存在
7			String[] names = file.list (); // 获得目录下的所有文件的文件名
8				for (String name : names) {
9					System.out.println(name); // 输出文件名
10				}
11		}
12	}
13 }

 4、遍历指定目录下所有扩展名为“.java”的文件

1 import java.io.File;
2 import java.io.FilenameFilter;
3 public class Example04 {
4    public static void main(String[] args) throws Exception {
5        // 创建File对象
6        File file = new File("D:/IdeaProjects/text/com/itcast");
7        // 创建过滤器对象
8        FilenameFilter filter = new FilenameFilter() {            
9 // 实现accept()方法
10            public boolean accept(File dir, String name) {
11                File currFile = new File(dir, name);
12                // 如果文件名以.java结尾返回true,否则返回false
13                if (currFile.isFile() && name.endsWith(".java")) {
14                    return true;
15                } else {
16                    return false;
17                }
18            }
19        };
20 if (file.exists()) { // 判断File对象对应的目录是否存在
21            String[] lists = file.list(filter); // 获得过滤后的所有文件名数组
22            for (String name : lists) {
23                System.out.println(name);
24            }
25        }
26    }
27 }

5、遍历目录下的文件和子目录的文件

listFiles()方法返回一个File对象数组,当对数组中的元素进行遍历时,如果元素中还有子目录需要遍历,则需要使用递归。

1 import java.io.File;
2 public class Example05{
3	public static void main(String[] args) {
4		// 创建一个代表目录的File对象
5        File file =
6           new File("D:\\eclipseWorkspace\\JavaBasicWorkspace\\chapter07"); 
7	    fileDir(file);				 // 调用FileDir方法
8	}
9	public static void fileDir(File dir) {
10		File[] files = dir.listFiles(); // 获得表示目录下所有文件的数组
11		for (File file : files) {		 // 遍历所有的子目录和文件
12			if (file.isDirectory()) {
13				fileDir(file);	 // 如果是目录,递归调用fileDir()
14			}
15		System.out.println(file.getAbsolutePath()); // 输出文件的绝对路径
16		}
17	}
18 }

6、删除文件及目录:

delete()方法只能删除一个指定的文件,假如File对象代表目录,并且目录下包含子目录或文件,则File类的delete()方法不允许对这个目录直接删除。在这种情况下,需要通过递归的方式将整个目录以及其中的文件全部删除。

递归的方式删除包含子文件的目录

1 import java.io.*;
2 public class Example07 {
3	public static void main(String[] args) {
4		File file = new File("D:\\hello\\test");
5		deleteDir(file); // 调用deleteDir删除方法
6	}
7	public static void deleteDir(File dir) {
8		if (dir.exists()) { // 判断传入的File对象是否存在
9			File[] files = dir.listFiles(); // 得到File数组
10			for (File file : files) { // 遍历所有的子目录和文件
11				if (file.isDirectory()) {
12					deleteDir(file); // 如果是目录,递归调用deleteDir()
13				} else {
14					// 如果是文件,直接删除
15					file.delete();
16				}
17			}
18			// 删除完一个目录里的所有文件后,就删除这个目录
19			dir.delete();
20		}
21	}
22 }

删除目录是从虚拟机直接删除而不放入回收站的,文件一旦删除就无法恢复,因此在进行删除操作的时候需要格外小心。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值